我有一個UITextview,它上面有一個小UIViewController,它的視圖是一個UITextView(它在屏幕截圖中是紅色的)。小紅色的textView是它下面的更大的textView的子視圖。爲什麼更改UITextView的框架原點會完全破壞我的整個框架大小?
繼承人看起來像什麼。小textView是紅色的,形狀很小(比方說50 x 50)。故意切割屏幕的邊緣。這就是它的定位。
這是肖像。當設備旋轉到橫向時,我希望小textView移動到左側,因此它不再位於較大的textView的頂部,但它仍然是子視圖。因此,我創建了一個與小型textView的框架大小相同的新CGRect,然後更改原點的x座標。然後將小的textViews框架重新分配給更改後的框架。具體方法如下:
-(void)willAnimateRotationToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration{
if (toInterfaceOrientation == UIInterfaceOrientationLandscapeLeft || toInterfaceOrientation ==UIInterfaceOrientationLandscapeRight) {
CGRect smallFrame = self.smallTextView.view.frame;
smallFrame.origin.x -=20.0;
self.smallTextView.view.frame = smallFrame;
}
}
繼承人的結果:
顯然,這是不正確。我甚至沒有觸及textView的框架大小,但是這些屬性被改變了!有什麼奇怪的是,如果我的NSLog的尺寸大小,它們是相同的,因爲他們在旋轉前,50×50
幾個意見:
- 這隻有紅色的小TextView的是A發生TextView中。我可以用UIImageView替換這個視圖,這個問題不會發生。
- 我很確定這是因爲它是另一個UITextView的子視圖。爲什麼?怎麼樣?沒有線索。
- 我開始認爲問題在於如何使用大型超級用戶界面UITextView旋轉,以及子視圖小型紅色textView是如何實現的。即使在界面構建器中的「Autoresize Subviews」未針對任何textView進行檢查。大型超級視圖textView受限於IB中的特定寬度和高度。所以尺寸並沒有真正改變。
我真的很感謝這個幫助。我一直在看它幾天,只是找不到原因或解決方案。