2013-06-11 52 views
0

我有一個UITextview,它上面有一個小UIViewController,它的視圖是一個UITextView(它在屏幕截圖中是紅色的)。小紅色的textView是它下面的更大的textView的子視圖。爲什麼更改UITextView的框架原點會完全破壞我的整個框架大小?

繼承人看起來像什麼。小textView是紅色的,形狀很小(比方說50 x 50)。故意切割屏幕的邊緣。這就是它的定位。

enter image description here

這是肖像。當設備旋轉到橫向時,我希望小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; 
    } 
} 

繼承人的結果:

enter image description here

顯然,這是不正確。我甚至沒有觸及textView的框架大小,但是這些屬性被改變了!有什麼奇怪的是,如果我的NSLog的尺寸大小,它們是相同的,因爲他們在旋轉前,50×50

幾個意見:

  1. 這隻有紅色的小TextView的是A發生TextView中。我可以用UIImageView替換這個視圖,這個問題不會發生。
  2. 我很確定這是因爲它是另一個UITextView的子視圖。爲什麼?怎麼樣?沒有線索。
  3. 我開始認爲問題在於如何使用大型超級用戶界面UITextView旋轉,以及子視圖小型紅色textView是如何實現的。即使在界面構建器中的「Autoresize Subviews」未針對任何textView進行檢查。大型超級視圖textView受限於IB中的特定寬度和高度。所以尺寸並沒有真正改變。

我真的很感謝這個幫助。我一直在看它幾天,只是找不到原因或解決方案。

回答

0

前一陣子解決了這個問題。分配textView的center屬性而不是其解決了問題。

CGPoint center = self.smallTextView.view.center; 
center.x -=20.0; 
self.smallTextView.center = center; 

即使如此,分配的TextView的frame具有不同origin還是引起了錯誤,即使是在iOS的7,但分配中心工作得很好。

相關問題