1

質問:画面が回転した後に自動回転されたUIViewが与えられるサイズを取得することは可能ですか?しかし、回転が完了する前にこの値を取得することはできますか?もしそうなら、どのように?

背景: 複数のUILabelが含まれているUIView(画面のメインUIViewよりも小さい)内の列に配置されている画面を持つiPadアプリを構築しています。各ラベルのラベルの数とテキストの長さは不明です。コンパイル時。それらは、実行時に動的に画面上に配置され、画面から物が切り取られないように最適な列数と幅を選択しようとするアルゴリズムを使用します。再ジギングプロセスをユーザーにできるだけスムーズに見せるために、私はこれを次の内部で行う必要があると信じています。

-(void)willRotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration

ただし、もちろん、このメソッドは回転が完了する前に呼び出されるため、含まれているUIViewのサイズを事前に知っておく必要があります。

4

2 に答える 2

1

iOS 5 では、viewWillLayoutSubviewsあなたが探しているものを実現します。

iOS 4 では、コントロール/サブビューの移動をアニメーション化することで、移動の不快感を少し軽減できますdidRotateFromInterfaceOrientation(そのように聞こえないことはわかっていますが、大きな違いがあります)。したがって、ボタンの newFrame への移動をアニメーション化する場合は、次のように簡単です。

[UIView animateWithDuration:0.25 animations:^{ 
    [button setFrame:newFrame]; 
}];

最後に、 , の賢明な使用autoResizingMaskも非常に役立ちますが、相互にコントロールを移動していることを考えると、これは可能ではないと私は考えています.

于 2012-05-06T12:11:21.250 に答える
0

チェックアウト:

- (void)didRotateFromInterfaceOrientation:(UIInterfaceOrientation)fromInterfaceOrientation

これらのメソッドはすべて、次の場所にあります。

http://developer.apple.com/library/ios/#documentation/uikit/reference/UIViewController_Class/Reference/Reference.html

于 2012-05-06T04:51:18.840 に答える