2016-07-10 5 views
0

У меня есть UIView в качестве ребенка, и я хочу получить значение обновления для центров x и y, когда представление преобразует его ориентацию от пейзажа к портрету или наоборот , Я использую AutolayoutПолучить обновленное центральное положение UIView после изменения ориентации iOS8

Я пробовал эти два метода, но значения не обновлялись внутри этого метода.

- (void)viewWillTransitionToSize:(CGSize)size withTransitionCoordinator:(id<UIViewControllerTransitionCoordinator>)coordinator 

-(void)willTransitionToTraitCollection:(UITraitCollection *)newCollection withTransitionCoordinator:(id<UIViewControllerTransitionCoordinator>)coordinator 

Может кто-нибудь скажет мне, что это их любой метод, который выполняется при изменении ориентации и значения обновляются.

+0

Можете ли вы не использовать 'viewWillLayoutSubviews'/'viewDidLayoutSubviews'? –

ответ

1

Следующий метод вызывается после перехода. Вы можете проверить этот метод.

func traitCollectionDidChange(_ previousTraitCollection: UITraitCollection?) 
0

Вы также можете отслеживать положение в

-(void) layoutSubviews 

Или, если вы используете контроллер:

-(void) viewDidLayoutSubviews 

Этот метод называют каждый раз, когда ваш взгляд является перерисовывать, а это означает, что она будет можно вызвать также после изменения ориентации. Также FYI, я предпочитаю не использовать этот метод для установки любого нового макета, а просто для того, чтобы получить позицию по вашему запросу. Если вы установите фрейм в этом методе, вы можете иметь плохое поведение, которое сложно отлаживать;)

 Смежные вопросы

  • Нет связанных вопросов^_^