2013-12-23 4 views
1

Это сводит меня с ума. У меня есть веб-просмотр и идентификатор UIActivityIndicator.UIActivityIndicator не загружается в центр

По какой-то причине он не загружается в центре веб-обозревателя и вместо этого загружается слева.

Пробовал несколько учебников, чтобы получить эту работу, но не может понять это.

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 

    // Do any additional setup after loading the view. 
    NSLog(@"PASSED URL IS %@", passedURL); 
    NSString *fullURL = passedURL; 
    //NSString *fullURL = @"http://107.22.183.71/index.php"; 
    NSURL *url = [NSURL URLWithString:fullURL]; 

    activityIndicator = [[UIActivityIndicatorView alloc]initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleGray]; 

    //Put the indicator on the center of the webview 
    [activityIndicator setCenter:self.view.center]; 

    //Assign it to the property 
    self.activityIndicator=activityIndicator; 

    //Add the indicator to the webView to make it visible 
    [self.webView addSubview:self.activityIndicator]; 


    NSURLRequest *requestObj = [NSURLRequest requestWithURL:url]; 
    [_webView loadRequest:requestObj]; 
} 

Я подозреваю, что это мой заказ по загрузке webview или индикатора.

Сам индикатор работает нормально, и я выполнил все требуемые делегаты.

Любая помощь очень ценится.

ответ

3

Геометрия вашего вида на данный момент не установлена ​​(viewDidLoad). Поместите UIActivityIndicator в viewWillAppear:, и все должно быть в порядке.

1

Попробуйте [self.view addSubview:self.activityIndicator]; вместо [self.webView addSubview:self.activityIndicator];

Моя догадка ваша WebView не принимает весь экран, так что вам нужно, чтобы добавить его в self.view

+0

Это была комбинация обоих этих. Ваш ответ был последним шагом, чтобы переместить его в центр – EHarpham

0

Возможно просмотров self.view и self.webview не имеют тот же центр.
Попробуйте заменить

[activityIndicator setCenter:self.view.center]; 

по

[activityIndicator setCenter:self.webView.center]; 
0

Несколько вещей:

вы используете авто-макет? Если это так, вам нужно будет добавить ограничение, которое связывает центр индикатора активности с центром веб-представления.

Далее, где ваш веб-просмотр в иерархии вашего представления?

Поскольку вы добавляете индикатор активности в качестве подсмотра веб-представления, его центральное положение должно быть выражено в системе координат веб-представления, а не в системе координат основного вида контроллера.

Попробуйте это:

CGPoint center = CGPointMake(CGRectGetMidX(_webView.bounds), CGRectGetMid(_webView.bounds)); 
[activityIndicator setCenter: center]; 

Я не знаю, если вы будете иметь проблемы с веб-просмотра положить вещи на верхней части индикатора активности.

Вместо того, чтобы добавить индикатор активности в качестве подсмотра вашего веб-представления, вы можете добавить его в представление контроллера представления, размещенное поверх веб-представления и расположенное, чтобы центрировать его там.

Смежные вопросы