Обычно я решаю эту проблему, используя преимущества autoresizing
методов в представлении в сочетании с реализацией методов willAutorotateToInterfaceOrientation
и willAnimateRotationToInterfaceOrientation
в контроллере представления.
С помощью методов автоматического изменения размера вы можете легко изменить размерстандартные элементы интерфейса, предоставляемые Apple.Если ваши элементы пользовательского интерфейса не имеют невозможного макета, вы также можете применить к ним методы авторазмера.Необходимо установить для свойства autoresizesSubviews
значение YES
в родительском контроллере представления и выбрать режим автоматического изменения размера для каждого подпредставления.Например, если вы хотите, чтобы он изменял размеры вправо, сохраняя вид по центру, вы можете применить маску autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleRightMargin
в подпредставлении.
Если методы авторазмера не помогают, то вам понадобитсяизменить размер каждого конфликтующего представления отдельно, внедрив - (void)willAnimateRotationToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration
в вашем контроллере представления.Если у вас есть «полные пользовательские элементы», вам нужно изменить их размер таким образом.
В своем конкретном опыте я предпочитаю иметь только один контроллер вида и один вид для всех ориентаций и управлять ими с помощью этих двух методов.
Надеюсь, это поможет вам!