我們知道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