2013-04-17 14 views
10

私のアプリケーションでは、ナビゲーションバーの中央にアクティビティインジケータ(タイトル位置)を追加する必要があります.Webサービスの応答が完了したら、古いタイトルに置き換えてください。 application.When私はいくつかのコードを持ってGoogleで検索したが、彼らは単に左または右のバーのボタンを変更しています。何か助け?ナビゲーションバーの中央のアクティビティインジケータ

答えて

19

ナビゲーション項目のtitleViewプロパティを使用して、ナビゲーションバーのタイトルを置き換えます。

また
self.navigationItem.titleView = nil; 
+0

「接続」のようなテキストでアクティビティインジケータを表示する方法はありますか? – bobsacameno

+0

@ roi.holtzman、私はそれが可能でなければならないと思います。あなたは、navigationItemのtitleViewとしてUIViewを作成し、2つのサブビューを与える必要があります。アクティビティインジケータおよびラベルを含む。 – rdelmar

2

、次回にテキストラベルを追加したい場合は:あなたはそれを削除し、再びタイトルを表示したい場合は

UIActivityIndicatorView *aiView = [[UIActivityIndicatorView alloc] initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleGray]; 
    aiView.hidesWhenStopped = NO; //I added this just so I could see it 
    self.navigationItem.titleView = aiView; 

:だからこれを行う、活動の指標を追加しますアクティビティインジケータ(設定アプリ、例えばFacebookログインにアップルが行われるように)、あなたがこれを行うことができます:

- (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の答えは私のためによく働いた、私は迅速

でそれを書きました
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 
    } 
+3

あなたの答えについていくつかの説明を書いてください。 – serenesat

+1

迅速に回答を見つけるのが難しいことがあります。ありがとう – krummens

関連する問題