2012-06-22 37 views
3

我想在取向改變後得到我UIView的大小。在我的視圖控制器中,我實現了didRotateFromInterfaceOrientation:並在我的視圖中調用setNeedsLayout:。在我的視圖的layoutSubviews方法中,它試圖根據新的幀大小旋轉後執行一些邏輯,但幀大小並未更新以反映新的方向(例如,在移至橫向後,它仍然是768x1024而不是1024x768)。iOS UIView旋轉後得到幀

如何獲取更新的幀大小?

+3

您是否嘗試過使用邊界? – Pochi

+0

Derp,爲我修好了!謝謝! – phosphoer

+1

爲什麼這個工作? – Remover

回答

3

只要回答路易斯·奧斯卡所說的話,以便問題顯示爲答案。 解決方案是訪問「邊界」屬性而不是「框架」。

+0

這正是我所期待的。謝謝! – Lance

2

請嘗試此方法。此方法將在rotation.Hope這可能會幫助你自動調用。謝謝。

- (void)willRotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration { 

    if (UIInterfaceOrientationIsPortrait(toInterfaceOrientation)) { 
     NSLog(@"%f,%f",self.view.frame.size.width,self.view.frame.size.height); 
    } else if (UIInterfaceOrientationIsLandscape(toInterfaceOrientation)) { 
     NSLog(@"%f,%f",self.view.frame.size.width,self.view.frame.size.height); 
    } 
} 
+0

對我來說,這個問題是視圖中的視圖從視圖控制器中向下幾個級別(如在視圖控制器視圖的子視圖的子視圖中)。我不知道如何以合理的方式從視圖控制器獲取此信息。 – phosphoer