iOS:view.frame
我们知道view.frame 是在当前view在父容器坐标空间中的。我在ipad的一个ViewController中只放一个view,View里面只放了个webView(界面Landscape),本想达到webview的contentSize,所以我在代码中添加:
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
作者:老Zhan
出处:http://www.cnblogs.com/mybkn/
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。