In UIActivityIndicatorView in UIBarButton
-
19-09-2019 - |
Frage
Wie füge ich einen UIActivityIndicatorView Spinner Kreis in eine UIBarButton, so dass, wenn ein Benutzer Taps auf einer dieser Tasten auf der Navigationsleiste sehen sie einen Spinner, während das Laden stattfindet?
Lösung
Wenn Sie versuchen, die Aktivität Rad in einer Navigationsleiste Taste zeigen (zum Beispiel könnten Sie einen Refresh-Button auf Ihrem navbar haben) - ein neues UIBarButtonItem
mit einer benutzerdefinierten Ansicht ist die UIActivityIndicatorView
erstellen:
Objective-C
uiBusy = [[UIActivityIndicatorView alloc] initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleWhite];
uiBusy.hidesWhenStopped = YES;
[uiBusy startAnimating];
[self.navigationItem.rightBarButtonItem initWithCustomView:uiBusy];
Swift
let uiBusy = UIActivityIndicatorView(activityIndicatorStyle: .White)
uiBusy.hidesWhenStopped = true
uiBusy.startAnimating()
self.navigationItem.rightBarButtonItem = UIBarButtonItem(customView: uiBusy)
Das überschreibt Ihre rightBarButtonItem
mit dem Spinnrad. Wenn Sie fertig sind, sondern nur die rightBarButtonItem
neu erstellen.
Andere Tipps
activityIndicator = [[UIActivityIndicatorView alloc] initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleWhite];
activityIndicator.hidesWhenStopped = YES;
self.navigationItem.rightBarButtonItem = [[UIBarButtonItem alloc] initWithCustomView:activityIndicator];
Legen Sie die folgenden, wo immer erforderlich ist:
[activityIndicator startAnimating];
[activityIndicator stopAnimating];
Eigentlich Aktivitätsindikator wird als Symbolelement hinzugefügt. Es ist ein Subview der aktuellen Ansicht.
UIActivityIndicatorView *act = [[UIActivityIndicatorView alloc] initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleWhite];
[act setCenter:CGPointMake(20, 20)];
[act startAnimating];
[self.view addSubview:act];
Denken Sie daran, es in -(void)dealloc
zu veröffentlichen.
Verwenden Sie diese Methoden
-(void)startAniatingActivityIndicator{
@try {
activityIndicator = [[UIActivityIndicatorView alloc] initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleWhite];
activityIndicator.frame = CGRectMake(self.window.frame.size.width-30, 32.5, activityIndicator.bounds.size.width, activityIndicator.bounds.size.height);
[self.window addSubview:activityIndicator];
[activityIndicator startAnimating];
[self.window bringSubviewToFront:activityIndicator];
}
@catch (NSException *exception) {
}
@finally {
}
}
-(void)stopAniatingActivityIndicator{
[activityIndicator stopAnimating];
[activityIndicator removeFromSuperview];
activityIndicator = nil;
}
UIActivityIndicatorView ist eine Art von Ansicht. Legen Sie den Rahmen in Ihrer Taste und Verwendung -addSubview zu sein, um es der UIBarButton zu der Ansicht Hierarchie hinzuzufügen.
Ich bin zu stark zu vereinfachen, da Sie versuchen müssen, um den Raum zu machen passen (möglicherweise durch Skalierung) und zentriert ...
Pseudo-Code, ich werde das nicht in Xcode überprüfen, aber so etwas wie dies funktionieren soll:
UIActivityIndicatorView *act = [[UIActivityIndicatorView alloc] init];
act.frame = CGMakeRect(3,3,25,25);
[myBarButton addSubview:act];
[act release];