2011-12-13 31 views
1

我想淡出一個視圖並在最後顯示一個webview,並將頁面調整爲適合web視圖。但是,當我嘗試通過完成塊顯示動畫結尾處的webview時,網頁不會縮放以適合正確的尺寸,而是縮放得太多,並且需要平移以查看全部。 舉例來說,如果我有:爲什麼在動畫塊中顯示視圖時UIWebView scalingpagetofit不起作用?

- (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時。任何人都知道發生了什麼事?

回答

2

爲了回答我自己的問題,我認爲這是由於webview在加載內容時沒有任何明確的參考框架來處理它,所以它無法正確佈置內容,如我突然將其作爲控制器觀看動畫後。

作爲一個解決方法,所有我需要做的就是給它在viewDidLoad中框架:webView.frame = self.view.frame;

而且我真的很幸運以上;由於在nib中指定了該幀,因此該幀已被設置爲self.view,時間爲viewDidLoad:。如果我在loadView:中動態生成視圖而不設置任何幀,那麼我必須將該幀分配推遲到viewWillAppear:。 (浪費多一點時間提醒自己,這很難!)

相關問題