Как приложение камеры предотвращает вращение своих панелей инструментов, в то время как изображение и его кнопки вращаются?

Я заметил, что при вращении приложения камеры IOS его панели инструментов не вращаются.

Панели инструментов не вращаются, но содержимое и кнопки на панели инструментов вращаются?

Как я могу добиться этого эффекта? Было бы здорово, если бы некоторые viewControllers в одном и том же представлении возвращали значение shouldAutorotate = NO, а некоторые — shouldAutorotate = YES.

Прямо сейчас я не думаю, что преобразование только для вращающихся представлений - хороший вариант? Есть ли другой способ?

Я использую IOS 6.


person jack    schedule 24.02.2014    source источник


Ответы (1)


Вам нужно будет переопределить layoutSubviews в вашем UIView, чтобы расположить и повернуть кнопки и изображения так, как вы хотите. Отметьте там [UIApplication sharedApplication] statusBarOrientation, чтобы определить текущую ориентацию, и поверните все соответствующим образом. В зависимости от того, как вы реализовали свой контроллер представления, вам также может потребоваться переопределить willRotateToInterfaceOrientation и/или didRotateFromInterfaceOrientation в вашем контроллере представления, чтобы обрабатывать то, что происходит до и после поворота.

person Jeff Loughlin    schedule 24.02.2014
comment
поэтому я бы поместил в свой контроллер представления shouldAutorotate = YES, и в моем layoutSubviews я бы не вызывал super, а вращал нужные представления - person jack; 24.02.2014
comment
Правильный. Вероятно, вам также потребуется расположить панель инструментов вручную. - person Jeff Loughlin; 24.02.2014
comment
много спасибо. Разве не может быть опасно не вызывать [super layoutSubviews]? в любом случае попробую - person jack; 24.02.2014
comment
По умолчанию layoutSubviews ничего не делает до iOS 6 (?), а в iOS 6 и выше он просто применяет любые установленные вами ограничения. Поскольку вы в любом случае будете переопределять позиции подпредставления вручную, вы, вероятно, не установили никаких ограничений. Вы все еще можете вызвать [super layoutSubviews], если хотите, но это не обязательно. - person Jeff Loughlin; 24.02.2014
comment
Извините, я пытался переопределить layoutSubviews без особого успеха. Я пытаюсь ответить на новый вопрос. Как предотвратить вращение внешнего UIView (панели инструментов) вокруг центрального представления shouldAutoRotate. - person jack; 25.02.2014
comment
Я думаю, что приближаюсь... одна мысль, которая меня раздражает, заключается в том, что вид без поворота анимируется в правильное положение. Возможно, придется использовать снимок экрана, чтобы было похоже, что поворот панели инструментов не происходит. - person jack; 25.02.2014