2009-11-12 57 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; 

}

相關問題