Если вам не нужны временные повороты фонового вида, после которых фон меняется на правильную ориентацию, вам нужно отключить автоповорот для вида. Нет двух способов об этом.
Вам нужно будет самостоятельно управлять поворотом кнопок. Вы можете сделать хороший макет или надеть их, например, на Scrollview и просто изменить его размер.
В любом случае вам нужно добавить наблюдателя, чтобы вращать его самостоятельно,
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(didRotate:)
name:UIDeviceOrientationDidChangeNotification object:nil];
И в didRotate вы делаете изменение размера, с хорошим анимированным переходом, если хотите.
- (void) didRotate:(NSNotification *)notification {
int ori=1;
UIDeviceOrientation currOri = [[UIDevice currentDevice] orientation];
if ((currOri == UIDeviceOrientationLandscapeLeft) || (currOri == UIDeviceOrientationLandscapeRight)) ori=0;
}
Надеюсь, что это тебя сортирует. Если панели навигации или строки состояния приводят к тому, что представление скрывается под верхней панелью, это можно исправить.