Niezależnie od rozmiaru, który mu nadam podczas alokacji, pokazuje tylko stały rozmiar. Czy można go zwiększyć?
Kod:
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;
ios
iphone
swift
uiactivityindicatorview
rosomak
źródło
źródło
Odpowiedzi:
Rozmiar jest ustalany przez styl. Jest to ustandaryzowany element interfejsu, więc API nie lubi się nim bawić.
Jednak prawdopodobnie mógłbyś na nim wykonać transformację skalującą. Nie jestem jednak pewien, jak to wpłynie na to wizualnie.
Tylko z perspektywy projektowania interfejsu użytkownika zwykle lepiej jest pozostawić te wspólne standardowe elementy w spokoju. Użytkownik został nauczony, że pewne elementy pojawiają się w określonym rozmiarze i mają określone znaczenie. Zmiana standardowego wyglądu zmienia gramatykę interfejsu i dezorientuje użytkownika.
źródło
UIActivityIndicatorViewStyleWhiteLarge
, ale zamiast tego o małym rozmiarze, prawda? Bo uważam, że taLarge
wersja ma niezły rozmiar nawet na pustym ekranie..whiteLarge
czy to! dzięki! Ustawiłem teżUIActivityIndicatorView(frame: CGRect(x: 0, y: 0, width: 100, height: 100))
iactivityIndicator.backgroundColor = UIColor(red: 255/255, green: 255/255, blue: 255/255, alpha: 0.38)
. Na ekranach 6 + / 7 + domyślny jest po prostu zbyt małyPoniższe elementy utworzą wskaźnik aktywności o szerokości 15 pikseli:
#import <QuartzCore/QuartzCore.h> ... UIActivityIndicatorView *activityIndicator = [[[UIActivityIndicatorView alloc] initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleGray] autorelease]; activityIndicator.transform = CGAffineTransformMakeScale(0.75, 0.75); [self addSubview:activityIndicator];
Chociaż rozumiem sentyment odpowiedzi TechZen, nie sądzę, aby zmiana rozmiaru wskaźnika UIActivityIndicator o stosunkowo niewielką wartość była naprawdę naruszeniem standardowych idiomów Apple - to, czy wskaźnik aktywności wynosi 20 pikseli, czy 15 pikseli, nie zmieni interpretacji użytkownika tego, co się dzieje.
źródło
Swift 3.0 i Swift 4.0
self.activityIndi.transform = CGAffineTransform(scaleX: 3, y: 3)
źródło
Istnieje możliwość zmiany rozmiaru UIActivityIndicator.
CGAffineTransform transform = CGAffineTransformMakeScale(1.5f, 1.5f); activityIndicator.transform = transform;
Oryginalny rozmiar to 1,0f. Teraz odpowiednio zwiększasz i zmniejszasz rozmiar.
źródło
let transform = CGAffineTransformMakeScale(1.5, 1.5)
activityIndicator.transform = transform
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)
źródło
Oto rozszerzenie, które działałoby ze Swift 3.0 i sprawdza, aby zapobiec skalowaniu 0 (lub jakiejkolwiek wartości, którą chcesz zabronić):
extension UIActivityIndicatorView { func scale(factor: CGFloat) { guard factor > 0.0 else { return } transform = CGAffineTransform(scaleX: factor, y: factor) } }
Nazwij to tak, aby skalować do 40 pkt (2x):
activityIndicatorView.scale(factor: 2.0)
źródło
Istnieje również wiele innych przydatnych sztuczek "CGAffineTransform", którymi możesz się bawić. Aby uzyskać więcej informacji, zobacz odniesienie do biblioteki programistów Apple:
http://developer.apple.com/library/mac/#documentation/GraphicsImaging/Reference/CGAffineTransform/Reference/reference.html
Powodzenia!
źródło
Najlepsze, co możesz zrobić, to użyć
whiteLarge
stylu.let i = UIActivityIndicatorView(activityIndicatorStyle: UIActivityIndicatorViewStyle.whiteLarge)
.Zwiększenie rozmiaru
UIActivityIndicatorView
nie zmienia rozmiaru właściwego wskaźnika, co widać na tych zdjęciach.źródło
activityIndicator.transform = CGAffineTransform (skala X: 1,75, y: 1,75);
To pomogło mi w przekształceniu rozmiaru wskaźnika.
źródło