2011-12-13 2 views
1

私はビューをフェードアウトして最後にWebviewを表示し、そのページはwebviewに収まるようにスケーリングしたいと思います。しかし、完成ブロックを介してアニメーションの終わりにwebviewを表示しようとすると、Webページが適切に収縮するのではなく、むしろあまりにもスケーリングされ、すべてを見るためにパンが必要になります。例えば は、私が持っている場合:アニメーションブロックでビューを表示しているときにUIWebViewのスケーラビットが機能しないのはなぜですか?

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

を私は上記の幸運。フレームは、それがペン先で指定されたので、時刻viewDidLoad:までにself.view用にすでに設定されていました。フレームを設定せずにloadView:というビューを動的に生成した場合、そのフレーム割り当てをviewWillAppear:に延期する必要があります。 (ハードなことを思い出させてもう少し時間を無駄にした!)

関連する問題