Давайте посмотрим, что здесь делает UIPopoverController .Из документации:
Если пользователь поворачивает устройство, когда всплывающее окно видно, контроллер всплывающего окна скрывает всплывающее окно и затем показывает его снова в конце поворота.Контроллер всплывающих окон пытается расположить поповер надлежащим образом для вас, но в некоторых случаях вам, возможно, придется снова представить его или скрыть.
Так что UIPopoverController не вращаетпредставление popover, которое оно поддерживает, как UIViewController .Это имеет смысл, учитывая, что UIPopoverController наследуется от NSObject и поэтому не наследует код UIViewController , который обрабатывает поворот.
Вы пытаетесь реализовать свой собственный UIPopoverController (я не буду спрашивать, почему!), И вы также наследуете от NSObject , поэтому вы не наследуете код, который будет вращать вашвзгляды для вас.Когда вы добавляете свой полноэкранный UIView в UIWindow , UIView существует в UIWindow координатном пространстве.При вращении устройства пространство координат UIWindow никогда не меняется .Для того чтобы ваш вид был повернут и перемещен в правильное пространство в ландшафтном режиме, вам придется сделать это вручную, применив CGSAffineTransform к свойству transform вашего UIView , возможно, вычисление матрицы вращения с использованием угла, полученного из ориентации интерфейса строки состояния (это то, что UIViewController сделает для вас!)
Ваш пользовательский UIPopoverController может управлять ротацией, но было бы проще получить это бесплатно, используя подкласс UIViewController , если это возможно.