2016-07-10 9 views
0

私はUIViewを子供として持っており、ビューがその向きを風景から肖像画に、またはその逆に変換するときにセンターxとyの起源の更新値を取得したい。私は使用していますAutolayout向きが変更された後のUIViewの中心位置を取得するiOS8

私はこれらの2つの方法を試みましたが、値はこのメソッドの内部で更新されませんでした。

- (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 

この方法は、それがすることを意味し、あなたのビューが再描画されるたびに呼び出すですオリエンテーションを変更した後でも呼び出されます。 また、この方法を使用して新しいレイアウトを設定するのではなく、要求したとおりに配置することをおすすめします。このメソッドでフレームを設定すると、デバッグするのが難しい、悪い振る舞いをすることがあります)

関連する問題