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?

War es hilfreich?

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];
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top