我有一个UITextview,上面有一个小的UIViewController,它的视图是UITextView(屏幕截图中的红色)。小红色textView是它下面较大textView的子视图。
看看它的样子。小textView是红色的,形状是小方块(让我们说50 x 50)。它是故意切割屏幕的边缘。这就是它的定位方式。
这是纵向的。当设备旋转到横向时,我希望小文本视图向左移动,使其不再位于较大的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 x 50。
一些观察结果:
我真的很感激这方面的一些帮助。我已经看了几天而且无法查明原因或解决方案。
答案 0 :(得分:0)
前一段时间解决了这个问题。分配textView的center
属性而不是frame
可以解决问题。
CGPoint center = self.smallTextView.view.center;
center.x -=20.0;
self.smallTextView.center = center;
即便如此,即使在iOS 7中,为textView的frame
分配不同的origin
仍然会导致错误。但是分配中心的工作正常。