У меня есть UITextview с небольшим UIViewController поверх него, представление которого UITextView (оно красное на снимках экрана). Небольшой красный textView - это подвид большего текстового элемента под ним.Почему изменение источника кадра UITextView полностью искажает весь размер вашего кадра?
Heres, как выглядит. Маленький textView красный и имеет форму маленького квадрата (скажем, 50 х 50). Он намеренно срезается с краем экрана. Вот как он позиционируется.
Это в портрете. Когда устройство повернуто к пейзажу, я хотел бы, чтобы маленький текстовый движок перемещался влево, поэтому он больше не находится поверх большого текстового изображения, но он все еще является подвью. Поэтому я создаю новый CGRect, который имеет тот же размер, что и малый блок textView, а затем меняет координату 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;
}
}
Heres результат:
Очевидно, что это неправильно. Я даже не касаюсь размера фрейма textView, но эти атрибуты изменены! Что незнакомец, что если я NSLog размеров размера, они такие же, как они были до поворота, 50 х 50.
Несколько наблюдений:
- Это происходит только тогда, когда маленький красный TextView является TextView. Я мог бы заменить это представление на UIImageView, и эта проблема не возникает.
- Я уверен, что это происходит, потому что это подзаголовок другого UITextView. Зачем? Как? Нет подсказки.
- Я начинаю думать, что проблема заключается в том, как работает большой супервизор UITextView, и каким-то образом какой-то путь осуществляется с небольшим красным текстовым элементом subview. Несмотря на то, что «Autoresize Subviews» в построителе интерфейса не проверяется ни для textViews. Большой супервизор textView ограничен определенной шириной и высотой в IB с ограничениями. Таким образом, размер на самом деле не меняется.
Я бы очень признателен за помощь в этом. Я смотрел на него несколько дней и просто не могу определить причину или решение.