Kann ich die Größe von UIActivityIndicator ändern?
-
26-09-2019 - |
Frage
Was Größe i während Zuordnung zu geben, zeigt er Größe nur fixiert. Ist es möglich, sie zu erhöhen?
Code:
activityIndicator = [[UIActivityIndicatorView alloc] initWithFrame:
CGRectMake(142.00, 212.00, 80.0, 80.0)];
[[self view] addSubview:activityIndicator];
[activityIndicator sizeToFit];
activityIndicator.autoresizingMask = (UIViewAutoresizingFlexibleLeftMargin |
UIViewAutoresizingFlexibleRightMargin |
UIViewAutoresizingFlexibleTopMargin |
UIViewAutoresizingFlexibleBottomMargin);
activityIndicator.hidesWhenStopped = YES;
activityIndicator.activityIndicatorViewStyle = UIActivityIndicatorViewStyleWhiteLarge;
Lösung
Die Größe wird durch den Stil festgelegt. Es ist eine standardisierte Schnittstelle Element, so dass die API nicht der Fall ist, wie auf Geige mit ihm.
Allerdings könnten Sie wahrscheinlich eine Skalierung auf sie verwandeln tun. Nicht sicher, wie dass es optisch beeinflussen würde, aber.
Ist gerade von einer UI-Design-Perspektive, seine in der Regel besser, diese gemeinsamen standardisierten Elemente allein zu lassen. Benutzer haben gelernt, dass bestimmte Elemente in einer bestimmten Größe erscheinen und dass sie bestimmte Dinge bedeuten. Ändern des Standard-Aussehen verändert die Schnittstelle Grammatik und verwirrt den Benutzer.
Andere Tipps
Im Folgenden wird ein Aktivitätsindikator 15px erstellen breit:
#import <QuartzCore/QuartzCore.h>
...
UIActivityIndicatorView *activityIndicator = [[[UIActivityIndicatorView alloc] initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleGray] autorelease];
activityIndicator.transform = CGAffineTransformMakeScale(0.75, 0.75);
[self addSubview:activityIndicator];
Während ich das Gefühl der TechZen Antwort verstehen, ich glaube nicht, die Größe eines UIActivityIndicator durch eine relativ kleine Menge Einstellung ist wirklich eine Verletzung von Apples standardisierte Schnittstelle Idiome - ob ein Aktivitätsindikator ist 20px oder 15px wird sich nicht ändern eine Interpretation des Benutzers, was los ist.
Swift 3.0 & Swift 4.0
self.activityIndi.transform = CGAffineTransform(scaleX: 3, y: 3)
Es ist möglich, UIActivityIndicator zu ändern.
CGAffineTransform transform = CGAffineTransformMakeScale(1.5f, 1.5f);
activityIndicator.transform = transform;
Originalgröße ist 1.0f. Jetzt können Sie Größe entsprechend erhöhen und verringern.
swift3
var activityIndicator = UIActivityIndicatorView()
activityIndicator = UIActivityIndicatorView(activityIndicatorStyle: UIActivityIndicatorViewStyle.gray)
activityIndicator.frame = CGRect(x: 0, y: 0, width: 50, height: 50)
let transform: CGAffineTransform = CGAffineTransform(scaleX: 1.5, y: 1.5)
activityIndicator.transform = transform
activityIndicator.center = self.view.center
activityIndicator.startAnimating()
self.view.addSubview(activityIndicator)
Hier ist eine Erweiterung, die 3.0 mit Swift funktionieren würde, & Checks 0 Skalierung verhindern (oder was auch immer Wert, den Sie verbieten wollen):
extension UIActivityIndicatorView {
func scale(factor: CGFloat) {
guard factor > 0.0 else { return }
transform = CGAffineTransform(scaleX: factor, y: factor)
}
}
Nennen Sie es wie so maßstäblich auf 40 Punkte (2x):
activityIndicatorView.scale(factor: 2.0)
Es gibt auch viele andere nützliche „CGAffineTransform“ Tricks, die Sie mit spielen können. Für weitere Informationen bitte Apple-Developer Library Referenz siehe:
Viel Glück!