Почему мой UIActivityIndicatorView не центрирован на экране? - PullRequest
3 голосов
/ 04 мая 2011
activityIndicator = [[UIActivityIndicatorView alloc] initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleWhiteLarge];
        activityIndicator.center = CGPointMake(self.view.bounds.size.width / 2.0f, self.view.bounds.size.height / 2.0f);

В настоящее время он появляется в нижней половине.

Ответы [ 6 ]

16 голосов
/ 02 марта 2012

Это поместит индикатор в центр вашего обзора (а не на экран!):

activityIndicator.center = CGPointMake(self.view.bounds.size.width / 2.0f, self.view.bounds.size.height / 2.0f);
activityIndicator.autoresizingMask = (UIViewAutoresizingFlexibleRightMargin | UIViewAutoresizingFlexibleLeftMargin | UIViewAutoresizingFlexibleBottomMargin | UIViewAutoresizingFlexibleTopMargin)

Автоматическое изменение размера сохраняется в центре при изменении его размера (например, при переключении ориентации экрана).

Если это не работает, ваша проблема в другом.Попробуйте записать размер вашего вида, может быть, он неправильно расположен?

NSLog(@"View frame: %@", NSStringFromCGRect(self.view.frame));
2 голосов
/ 04 января 2016

почему бы не просто так

activityIndicator.center =  self.view.center;

activityIndicator.autoresizingMask = (UIViewAutoresizingFlexibleRightMargin | UIViewAutoresizingFlexibleLeftMargin | UIViewAutoresizingFlexibleBottomMargin | UIViewAutoresizingFlexibleTopMargin)

это работает хорошо, без необходимости выполнять эти вычисления, как уже упоминалось другими

2 голосов
/ 04 мая 2011

Вы можете сделать это следующим образом:

activityIndicator = [[UIActivityIndicatorView alloc] initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleWhiteLarge];
    activityIndicator.frame = CGRectMake(self.view.bounds.size.width / 2.0f - activityIndicator.frame.size.width /2.0f, self.view.bounds.size.height / 2.0f - activityIndicator.frame.size.height /2.0f, activityIndicator.frame.size.width, activityIndicator.frame.size.height);
//then add to the view
1 голос
/ 08 июня 2012

Если вы добавляете индикатор в parentView, следующая логика должна центрировать индикатор на родительском - это работает для меня.

 // ...
 CGSize parentSize = parentView.frame.size;
 UIActivityIndicatorView *activityIndicator = [[UIActivityIndicatorView alloc] initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleWhite];
 activityIndicator.center = CGPointMake(parentSize.width/2, parentSize.height/2);
 // ...
0 голосов
/ 21 марта 2017

Установить центр в viewDidLayoutSubviews.

- (void) viewDidLayoutSubviews {<br> self.myActivityIndicator.center = self.view.center; }

Спасибо:)

0 голосов
/ 02 марта 2012

У меня тоже есть эта проблема, попробуйте это

activityIndicator.center =CGPointMake(480/2.0, 320/2.0);
...