0
if(UIInterfaceOrientationIsPortrait(self.interfaceOrientation)) {
NSLog(@"Device is in portrait");
} else if(UIInterfaceOrientationIsLandscape(self.interfaceOrientation)){
NSLog(@"Device is in landscape");
}
NSLog(@"View bounds are %@",NSStringFromCGRect(self.view.bounds));
我從viewDidLoad調用此代碼,然後從手勢識別器調用此代碼。當在橫向模式下,從viewDidLoad中的輸出爲:方向似乎與尺寸衝突
2013-01-04 20:44:48.925 293 Calendar[2638:907] Device is in landscape
2013-01-04 20:44:48.926 293 Calendar[2638:907] View bounds are {{0, 0}, {748, 1024}}
當從滑動手勢識別稱爲輸出是:
2013-01-04 20:44:58.002 293 Calendar[2638:907] Device is in landscape
2013-01-04 20:44:58.004 293 Calendar[2638:907] View bounds are {{0, 0}, {1024, 748}}
如果裝置處於橫向兩次,爲什麼相對尺寸?我應該在viewDidLoad之外查看其他視圖維度嗎?那會是什麼事?
我試過viewWillAppear,它和viewDidLoad一樣。 我試過viewDidAppear,它和手勢識別器一樣。所以我認爲這是我應該使用,而不是viewDidLoad正確的視圖尺寸。正確?
謝謝。我認爲這就是我需要的。順便說一句,有沒有一個文件概述了這些方法的流程? –
也許這不是我想要的。我需要觸發的代碼也需要從別處調用,例如,滑動手勢。問題是,當我從滑動手勢調用代碼時,會觸發viewWillLayoutSubview的調用,因此最終會被調用兩次。代碼中有些東西(可能是添加子視圖)會觸發viewWillLayoutSubviews。有什麼我可以設置直接觸發該方法? –
我發現[一篇有趣的文章](http://kevin.dew.name/post/18579273258/where-to-progmatically-lay-out-views-in-ios-5-and)關於放置代碼的各個地方。在做出另一個決定之前,我會仔細研究它。 –