Первоначально я собирался опубликовать это как комментарий, а не как ответ, но вместо этого я просто выберу маршрут ответа, хотя я не думаю, что здесь действительно достаточно информации для продолжения. Далее предполагается, что у вас есть довольно стандартное приложение для iOS, кроме этой странности наложения, когда вы присоединяете представление к keyWindow.
Во-первых, не прикрепляйте, добавьте свой оверлейный вид к ключевому окну. Вместо этого определите некоторый метод на вашем корневом контроллере представления, который запрашивает наложение, которое будет отображаться. Затем в своем коде контроллера корневого представления добавьте представление наложения к представлению контроллера над всем остальным.
Тогда не применяйте преобразование, так как больше не нужно будет поворачивать ваше представление.
Во время создания представления установите frame
на bounds
представления корневого контроллера. Также установите его, чтобы иметь гибкую ширину и высоту через autoresizingMask
UIView. Затем, предположив, что для вашего корневого UIView свойство autoresizesSubview
установлено в значение YES, размер вашего оверлея будет изменен в соответствии с размером корневого представления при изменении ориентации.
Если после всего этого положение содержимого вашего оверлея UIView
неверно, то я подозреваю, что проблема заключается в содержимом этого UIView
и не имеет никакого отношения к необходимости каких-либо магических чисел в вашем кадре / границы.
ПРИМЕЧАНИЕ. На самом деле я не пробовал вышеизложенное и не уверен на 100%, что в целом вашему корню UIView
понравится этот дополнительный оверлей UIView, добавленный поверх него, с другой стороны, он может оставайтесь блаженно не подозревая об этом, и все будет просто работать. В любом случае, для меня это выглядит гораздо менее «ad hoc», чем то, что вы сейчас пытаетесь сделать.