Во время инициализации я настраиваю свои представления (создаю их программно) и создаю дополнительные CGPoint для позиций центра или CGRect для фреймов для каждого вида в контроллере представления.
После того, как представления созданы в init, я вызываюметод с именем layoutViewsForOrientation, чтобы установить начальную позицию, передавая текущую ориентацию строки состояния.Когда ориентация меняется, я использую этот код:
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
BOOL result = NO;
if ([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPhone) {
result = (interfaceOrientation != UIInterfaceOrientationPortraitUpsideDown);
} else {
result = YES;
}
if( result == YES ) [self layoutViewsForOrientation:interfaceOrientation];
return result;
}
Возможно, есть более простой способ, но он хорошо подходит для моих нужд.