Почему UIWebView scalepagetofit не работает при отображении представления в анимационном блоке? - PullRequest
1 голос
/ 13 декабря 2011

Я хотел бы затемнить вид и отобразить веб-просмотр в конце, со страницей, масштабированной для соответствия веб-представлению.Однако, когда я пытаюсь отобразить веб-просмотр в конце анимации через блок завершения, веб-страница не масштабируется, чтобы соответствовать должным образом, а скорее масштабируется слишком сильно и требует панорамирования, чтобы увидеть все это.Например, если у меня есть:

- (void)viewDidLoad {
    [super viewDidLoad];
    webView = [[UIWebView alloc] init];
    webView.scalesPageToFit = YES;
    webView.backgroundColor = [UIColor blackColor];

    self.view.alpha = 1;
    self.view.backgroundColor = [UIColor whiteColor];
}

- (void)viewDidAppear:(BOOL)animated {
    [super viewDidAppear:animated];

    [webView loadRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:@"http://stackoverflow.com"]]];
//    self.view = webView;
    [UIView animateWithDuration:2 delay:0.0
                        options:UIViewAnimationOptionBeginFromCurrentState
                     animations:^{ self.view.alpha = 0; }
                     completion:^(BOOL fin){ self.view = webView; }];
}

, вещи не масштабируются должным образом в UIWebView, но если я откажусь от анимации и просто назначу self.view = webView, страница отобразится так, как можно было бы ожидать, когда scalesPageToFit = YES,Кто-нибудь знает, что происходит?

1 Ответ

2 голосов
/ 15 декабря 2011

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

В качестве исправления все, что мне нужно было сделать, это дать ему кадр в viewDidLoad: webView.frame = self.view.frame;

И мне повезло выше; фрейм уже был установлен для self.view ко времени viewDidLoad:, так как он был указан в кончике. Если бы я динамически генерировал представления, скажем, loadView:, не устанавливая там никаких кадров, мне пришлось бы отложить назначение этого кадра до viewWillAppear:. (Потратил немного больше времени, чтобы напомнить себе об этом нелегком пути!)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...