У меня были некоторые проблемы с ротацией, похожие на вашу. Короткая версия заключается в том, что методы воли и делания не являются надежными на 100%. Вы должны попробовать быстро вращаться взад и вперед и посмотреть, что произойдет. Это может быть потому, что я новичок, или это может быть настоящая ошибка. То, что я сделал, в didRotateFromInterfaceOrientation: проверил текущую ориентацию и действовал соответственно:
if (UIInterfaceOrientationIsPortrait(self.interfaceOrientation) {
// do your portrait stuff
} else {
// do your landscape stuff
}
Прежде чем я нашел тест UIInterfaceOrientationIsPortait, я на самом деле проверял фрейм, чтобы убедиться, что self.view.frame.size.width> self.view.frame.size.height, и это тоже надежно, но довольно уродливо. *
Любой способ надежен. У меня есть пара приложений в магазине, QPalettes и QColor, которые выполняют ротацию на куче созданных пользователем экранных элементов. Мне нужно было сохранить размеры, и после didRotateFromInterfaceOrientation я проверяю новые размеры и, если они различаются, перерисовываю все на экране. Свяжитесь со мной, если вы хотите, чтобы промо-код проверял вращение в любом приложении (они вращаются одинаково - QColor более сложный, поскольку он также рисует пересечения).
Наслаждайтесь,
Дэмиен