6

解決済み:私の問題の解決策については、以下を確認してください。

ここに画像の説明を入力してください

ねえそう、

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

ここに画像の説明を入力してください

4

5 に答える 5

7

2 つの問題:

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

  2. 第 2 に、現在のビューにはナビゲーション バーが含まれていないため、ナビゲーション バーの下の画面のスペースの中央に配置しています。これも低く見えるようになります。

于 2012-07-20T22:35:57.313 に答える
4

spinner.center = self.scrollView.center; を使用します。代わりは

これを試して

spinner.center = CGPointMake(CGRectGetMidX(self.bounds), CGRectGetMidY(self.bounds));

于 2012-07-20T22:18:32.027 に答える
3

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

于 2012-07-20T22:05:22.683 に答える