2009-11-12 78 views

回答

32

如果你想显示的导航栏按钮的活动轮(例如,你可能对你的导航栏刷新按钮) - 你可以用自定义视图作为UIActivityIndicatorView创建一个新的UIBarButtonItem

目标C

uiBusy = [[UIActivityIndicatorView alloc] initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleWhite]; 
uiBusy.hidesWhenStopped = YES; 
[uiBusy startAnimating]; 
[self.navigationItem.rightBarButtonItem initWithCustomView:uiBusy]; 

夫特

let uiBusy = UIActivityIndicatorView(activityIndicatorStyle: .White) 
uiBusy.hidesWhenStopped = true 
uiBusy.startAnimating() 
self.navigationItem.rightBarButtonItem = UIBarButtonItem(customView: uiBusy) 

这会用旋转轮盖写您的rightBarButtonItem。完成后,只需重新创建rightBarButtonItem即可。

+5

'[self.navigationItem.rightBarButtonItem initWithCustomView: uiBusy];'对我来说似乎很狡猾。我期望'self.navigationItem.rightBarButtonItem = [[UIBarButtonItem alloc] initWithCustomView:uiBusy];'根据@ emotality的答案。 – 2015-09-01 19:40:47

+1

备案:您通常要设置'uiBusy.activityIndi​​catorViewStyle = .gray' – Jeremy 2017-09-06 11:25:20

+0

我使用计算属性来访问uiBusy:'private var uiBusy:UIActivityIndi​​catorView {if} if if busyView = self.navigationItem.rightBarButtonItem?.customView as?UIActivityIndi​​catorView { 回报busyView }其他{ 让uiBusy = UIActivityIndi​​catorView(activityIndi​​catorStyle:。白) uiBusy.hidesWhenStopped =真 uiBusy.activityIndi​​catorViewStyle = .gray self.navigationItem.rightBarButtonItem =的UIBarButtonItem(customView:uiBusy) 回报uiBusy ' }' – Jeremy 2017-09-06 11:26:43

-1

UIActivityIndi​​catorView是一种视图。将其框架设置在您的按钮中,并使用-addSubview将其添加到UIBarButton的视图层次结构中。

我简单化,因为你必须设法使其适合空间(可能通过缩放)和居中......

-1

伪代码,我不打算在Xcode中检查这一点,但东西像这样应该工作:

UIActivityIndicatorView *act = [[UIActivityIndicatorView alloc] init]; 
act.frame = CGMakeRect(3,3,25,25); 
[myBarButton addSubview:act]; 
[act release]; 
+0

'UIBarButtonItem'不是'UIView'子类,没有'addSubview:'。你应该做一些像'UIBarButtonItem * myBarButton = [[UIBarButtonItem alloc] initWithCustomView:act];'而不是'myBarButton.customView = act;'。 – 2010-02-23 16:40:30

3

其实活动指标不会被添加为工具栏项目。这是当前观点的子视图。


    UIActivityIndicatorView *act = [[UIActivityIndicatorView alloc] initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleWhite]; 
    [act setCenter:CGPointMake(20, 20)]; 
    [act startAnimating]; 
    [self.view addSubview:act]; 
 

请记住在-(void)dealloc中发布它。

+0

有关如何使用活动指标的更多信息,请访问: http://stackoverflow.com/questions/593234/how-to-use-activity-indicator-view-on-iphone – 2009-11-12 08:03:56

5
activityIndicator = [[UIActivityIndicatorView alloc] initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleWhite]; 
activityIndicator.hidesWhenStopped = YES; 
self.navigationItem.rightBarButtonItem = [[UIBarButtonItem alloc] initWithCustomView:activityIndicator]; 

将以下何地需要:

[activityIndicator startAnimating]; 
[activityIndicator stopAnimating]; 
0

使用此方法

-(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; 

}

相关问题