2013-01-13 78 views
1

我有一個以編程方式創建的UIScrollView,我將它創建爲UIView背後的大小。在viewDidAppear我主要有:如何在設備旋轉時將正確的邊界設置爲視圖?

UIScrollView *scrollView= [[UIScrollView alloc] initWithFrame:mainView.bounds]; 
//mainView being the UIView behind 

當設備旋轉時,天然存在於背景中的變化的UIView界限更廣泛和更短的(雖然X,Y≠Y,X)。

在我-(void)didRotateFromInterfaceOrientation:我把`的NSLog(@ 「%@」,NSStringFromCGRect(mainView.bounds));,和MAINVIEW的邊界已經打開,但如果我這樣做:

-(void)didRotateFromInterfaceOrientation:(UIInterfaceOrientation)fromInterfaceOrientation 
{ 
    scrollView.bounds = mainView.bounds; 
    NSLog(@"%@", NSStringFromCGRect(scrollView.bounds)); 
    NSLog(@"%@", NSStringFromCGRect(mainView.bounds)); 
} 

它仍然顯示錯誤.. NSLog註銷兩個視圖相同的界限,但在屏幕上的主視圖是正確的,和scrollView似乎翻轉或東西,如果(0,0)在原點是在mainView之外,並且尺寸是翻錯了.. 我必須重新繪製東西,還是我在錯誤的地方調用了所有這些?或者不是.bounds正確的變量使用?

編輯

我意識到更新框架是不是重新啓動它initWithFrame:不同,但我想目前的內容保持不變,以同樣的方式..

+0

這是您的實際代碼或可能存在複製/粘貼錯誤?因爲它應該是NSLog(@「%@」,...)',而不是'NSLog(「%@」,...)'。 –

+0

是的,我手工輸入,所以它沒有任何關係,我會得到修復,謝謝;) – Sti

回答

1

您需要設置滾動視圖的框架不是它的邊界

scrollView.frame = mainView.bounds; 

或者更好的是,如果你設置了正確的自動尺寸口罩/約束它會自動調整。

+0

謝謝,修復了一些,但不是所有的東西..我已經在後臺製作了UIView灰色,以便我可以看到它在背景中何時彈出,並且使用您的代碼使其不會顯示灰色,這很好。但是,當我放大scrollView時,似乎有一箇中斷。但是,在寫這篇文章時,我意識到可能是scrollView的內容沒有更新邊界..?無論如何,至於autorezise /約束,我可以做到這一點以編程方式創建的ScrollView? – Sti

相關問題