2012-07-20 11 views
5

解決:私の問題の解決方法を以下で確認してください。UIActivityIndi​​catorを中央に揃えるには?

enter image description here

ねえSO、

は、私は、ビューの中央にUIActivityIndi​​catorを中心にトラブルを抱えています。あなたがここで見ることができるように、垂直より少し下になっています。私が持っているのは、後でUIImageのサブビューを追加するUIScrollViewです。 UIImageがロードされる前に、私はこのUIActivityIndi​​catorを使ってイメージがロード中であることを示します。

- (void)viewDidLoad 
{ 

    [super viewDidLoad]; 
    self.scrollView.backgroundColor = [UIColor blackColor]; 
    UIActivityIndicatorView *spinner = [[UIActivityIndicatorView alloc]  initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleWhiteLarge]; 
    spinner.center = self.view.center; 

    [spinner startAnimating]; 
    [self.view addSubview:spinner]; 

センターCGPointを取得してそこにUIActivityIndi​​catorを設定する方法についてのアイデアはありますか?なぜself.view.centerが動作しないのか分かりません。

ありがとうございます。

編集:ナビゲーションバーとタブバーの高さを考慮する必要がありました。私は追加する必要がありましたコードはでした:

float navigationBarHeight = [[self.navigationController navigationBar] frame].size.height; 
float tabBarHeight = [[[super tabBarController] tabBar] frame].size.height; 
spinner.center = CGPointMake(self.view.frame.size.width/2.0, (self.view.frame.size.height - navigationBarHeight - tabBarHeight)/2.0); 

enter image description here

答えて

6

2つの問題:

  1. まず、self.view.centerはそれの親のフレームに現在のビューのフレームの中心です。現在のビューの中心が必要な場合は、CGPointMake(self.view.frame.size.width/2.0, self.view.frame.size.height/2.0);

  2. 第2に、現在のビューにナビゲーションバーが含まれていないため、ナビゲーションバーの下の画面のスペースにセンタリングしています。それはまたそれをより低く見せるでしょう。

+0

ありがとう@ロバーツライアン!あなたの2つのヒントを捨てて、私はそれを適切に働かせることができました。適切な高さを得るために、ナビゲーションバーとタブバーの高さを調べなければなりませんでした。元の投稿にコードを追加しました。 – kkSlider

2

私は正確に何が起こっているかわからないんだけど、多分あなたのUIScrollViewのは、画面よりも背が高いですか? UIViewのサイズを印刷して、画面境界内にあるかどうかを調べることができます。おそらくUIActivityIndi​​catorはUIViewの中心にあります(画面の中心ではありません)。

+0

はUIViewのの境界の中心が画面の中心と同じではないでしょうか? – kkSlider

+0

NSLogはself.viewとself.scrollViewのCGRectが{{0、0}、{320、460}}であることを教えてくれました。 self.view.centerは正しく印刷します(160,230)。ここに何が間違っているのか分かりません。 – kkSlider

3

使用spinner.center = self.scrollView.center;代わりに

は()、CGRectGetMidY(self.bounds)をCGRectGetMidX(self.bounds)この

spinner.center = CGPointMakeを試してみてください。

+0

ありがとうございますが、私はすでにこれを試して、同じ結果を得ました。 – kkSlider

4

SWIFT

ため、私はナビゲーションバーとタブバーの同じ問題を抱えていました。修正するには、あなたのloadViewメソッド()またはどこでもアニメーションを開始するためにあなたの活動の指標を呼び出すには、次のコードを配置:viewDidLayoutSubviewsで

let navigationBarHeight = self.navigationController?.navigationBar.frame.height 
let tabBarHeight = super.tabBarController!.tabBar.frame.height 
YourActivityIndicator.center = CGPointMake(self.view.frame.size.width/2.0, (self.view.frame.size.height - navigationBarHeight! - tabBarHeight)/2.0) 
0

セットセンターを。

- (void) viewDidLayoutSubviews { 

self.myActivityIndicator.center = self.view.center;  

}

関連する問題