W mojej aplikacji chcę dodać wskaźnik aktywności na środku paska nawigacyjnego (pozycja tytułu). Gdy odpowiedź serwisowa została zakończona, powinien zostać zastąpiony starym tytułem. Mam 5 pasków nawigacyjnych w moim application.When wyszukiwane w google mam kilka kodów, ale po prostu zmieniają lewy lub prawy przycisk paska. Any help?Wskaźnik aktywności na środku paska nawigacyjnego
10
A
Odpowiedz
19
Używasz właściwości titleView elementu nawigacji, aby zastąpić tytuł paska nawigacji. Tak aby dodać wskaźnik aktywności, po prostu to zrobić:
UIActivityIndicatorView *aiView = [[UIActivityIndicatorView alloc] initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleGray];
aiView.hidesWhenStopped = NO; //I added this just so I could see it
self.navigationItem.titleView = aiView;
Gdy chcesz go usunąć i pokazać tytuł ponownie:
self.navigationItem.titleView = nil;
2
Ponadto, jeśli chcesz dodać etykietę tekstową obok wskaźnik aktywności (jak zrobione przez Apple w aplikacji ustawień, np Facebook login), można to zrobić:
- (void)showActivityIndicator
{
UIActivityIndicatorView *activityIndicatorView = [[UIActivityIndicatorView alloc] initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleWhite];
activityIndicatorView.frame = CGRectMake(0, 0, 22, 22);
activityIndicatorView.color = [UIColor blackColor];
[activityIndicatorView startAnimating];
UILabel *titleLabel = [UILabel new];
titleLabel.text = @"Creating Account";
titleLabel.font = [UIFont boldFlatFontOfSize:18];
CGSize fittingSize = [titleLabel sizeThatFits:CGSizeMake(200.0f, activityIndicatorView.frame.size.height)];
titleLabel.frame = CGRectMake(activityIndicatorView.frame.origin.x + activityIndicatorView.frame.size.width + 8,
activityIndicatorView.frame.origin.y,
fittingSize.width,
fittingSize.height);
UIView *titleView = [[UIView alloc] initWithFrame:CGRectMake(-(activityIndicatorView.frame.size.width + 8 + titleLabel.frame.size.width)/2,
-(activityIndicatorView.frame.size.height)/2,
activityIndicatorView.frame.size.width + 8 + titleLabel.frame.size.width,
activityIndicatorView.frame.size.height)];
[titleView addSubview:activityIndicatorView];
[titleView addSubview:titleLabel];
self.navigationItem.titleView = titleView;
}
- (void)hideActivityIndicator
{
self.navigationItem.titleView = nil;
}
10
pasqls odpowiedź pracował dobrze dla mnie, pisałem go w szybkim
func showActivityIndicator() {
let activityIndicatorView = UIActivityIndicatorView(activityIndicatorStyle: UIActivityIndicatorViewStyle.White)
activityIndicatorView.frame = CGRectMake(0, 0, 14, 14)
activityIndicatorView.color = UIColor.blackColor()
activityIndicatorView.startAnimating()
let titleLabel = UILabel.new()
titleLabel.text = "...Connecting"
titleLabel.font = UIFont.italicSystemFontOfSize(14)
let fittingSize = titleLabel.sizeThatFits(CGSizeMake(200.0, activityIndicatorView.frame.size.height))
titleLabel.frame = CGRectMake(activityIndicatorView.frame.origin.x + activityIndicatorView.frame.size.width + 8, activityIndicatorView.frame.origin.y, fittingSize.width, fittingSize.height)
let titleView = UIView(frame: CGRectMake(((activityIndicatorView.frame.size.width + 8 + titleLabel.frame.size.width)/2), ((activityIndicatorView.frame.size.height)/2), (activityIndicatorView.frame.size.width + 8 + titleLabel.frame.size.width), (activityIndicatorView.frame.size.height)))
titleView.addSubview(activityIndicatorView)
titleView.addSubview(titleLabel)
self.navigationItem.titleView = titleView
}
func hideActivityIndicator() {
self.navigationItem.titleView = nil
}
Czy istnieje sposób na wyświetlenie wskaźnika aktywności z tekstem typu "łączenie"? – bobsacameno
@ roi.holtzman, myślę, że powinno być możliwe. Będziesz musiał utworzyć UIView jako tytuł nawigacjiItemView i nadać mu dwa subviews; wskaźnik aktywności i etykieta. – rdelmar