iOS:view.frame

我们知道view.frame 是在当前view在父容器坐标空间中的。我在ipad的一个ViewController中只放一个view,View里面只放了个webView(界面Landscape),本想达到webview的contentSize,所以我在代码中添加:

View Code
    NSLog(@"self.view.frame is %@",NSStringFromCGRect(self.view.frame));
    NSLog(@"self.webView.frame is %@",NSStringFromCGRect(self.webView.frame));
    NSLog(@"webView.scrollView.contentSize is %@",NSStringFromCGSize(webView.scrollView.contentSize));
    NSLog(@"webView.scrollView.frame is %@",NSStringFromCGSize(webView.scrollView.frame.size));

但是输出确为:

 self.view.frame is {{0, 20}, {768, 1004}}

self.webView.frame is {{0, 0}, {768, 1004}}

webView.scrollView.contentSize is {1024, 1004}

webView.scrollView.frame.size is {100, 100}

完全不和逻辑。

原来我把上面代码放在了viewDidLoad中了,系统价值玩nib或StoryBoard中的视图后就立即调用viewDidLoad了,这时系统根本还没加载进去里面的内容,方向什么的也都还不知道。

当我把代码放在加载之后的地方之后,正确的应该是:

self.view.frame is {{20, 0}, {748, 1024}}

self.webView.frame is {{0, 0}, {1024, 748}}

webView.scrollView.contentSize is {5944, 748}

webView.scrollView.frame.size is {1024, 748}

 

另外注意,UIWindow的坐标体统一直都是竖立的。

 

check more:http://stackoverflow.com/questions/9539676/uiviewcontroller-returns-invalid-frame

 

 

posted on 2012-11-30 14:17  老Zhan  阅读(2645)  评论(0编辑  收藏  举报