2016-07-10 69 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 

这种方法是调用每一个你的看法是重绘时间,这意味着它会在改变方向后也会被调用。 也仅供参考,我宁愿不使用此方法来设置任何新布局,但只是按照您的要求获取位置。如果你在这个方法中设置帧,你可能会有一些不好的行为,很难调试;)