Когда вид вращается, убедитесь, что вы переходите от портрета к ландшафту:
if(UIInterfaceOrientationIsPortrait(self.interfaceOrientation) && UIInterfaceOrientationIsLandscape(interfaceOrientation)
Поскольку ориентация еще не изменилась, вместо
videoView.frame = CGRectMake(20.0f, 77.0f, 984.0f, 595.0f);
запись:
videoView.frame = CGRectMake(77.0f, 22.0f, 595.0f, 984.0f);
Кроме того, вы можете зайти в Интерфейсный Разработчик и изменить там маски авторазмера и ничего не делать в коде. Чтобы изменить маски авторазмера, перейдите в инспектор размера на правой панели (значок линейки). Вы увидите квадрат с вертикальной и горизонтальной стрелками внутри, и буква в форме линии, выходящая с каждой стороны. Стрелки внутри, когда они красные (включены, нажмите, чтобы включить), заставят объект автоматически растягиваться в этом направлении при изменении размера представления. Включение линии в форме буквы I, по существу, закрепляет вид на эту сторону, а это означает, что расстояние между стороной вида и этой стороной всегда будет одинаковым.
например Если у вас вверху панель инструментов, которая становится тоньше в альбомной ориентации, , а не , выберите верхнюю линию, или ваш вид в конечном итоге окажется за много миль от верхней панели инструментов.
Или вы можете вернуть no для авторотации и реализовать его самостоятельно, позвонив по номеру
self.interfaceOrientation = toInterfaceOrientation;
, а затем вручную измените координаты, как в исходном коде.
Вам действительно нужно поэкспериментировать с этим, я постоянно сталкиваюсь с этой проблемой и каждый раз исправляю ее по-разному.