0

縦向きと横向きの両方のモードで機能する UIView を作成しようとしていますが、これを実現する方法がわかりません。参考までに-すべてのコンポーネントをコードでレイアウトしているため、XIB やストーリーボードはありません...これは必須です。

createViewビューが作成されるたびに呼び出すすべてのビュー コンポーネント (ボタン、ラベルなど) をレイアウトするメソッドがあります。

私が知らないのは、コントローラーがaddSubview:myNewCustomView水平モードでビューを追加すると言うことです。次に、縦向きから横向きに切り替えるときに、カスタム UIView のコンポーネントのレイアウトを変更するにはどうすればよいですか?

カスタム UIView のメソッドを作成して、ポートレート用にレイアウトし、別のメソッドをランドスケープ用にレイアウトしますか? メソッドが 2 つある場合、親の表示モード (横向きまたは縦向き) を取得してから、カスタム UIView で適切な createView メソッドを呼び出す必要がありますか?

4

1 に答える 1

1

CustomView クラスで layoutSubviews メソッドをオーバーライドできます。そして、ViewController で CustomView オブジェクトの setNeedsLayout を呼び出します。CustomView で向きの変数を保持する

CustomView:-

- (void) layoutSubviews(){
    // set position and height width of the subviews according to this views params
}

YourViewController:-

-(void)willRotateToInterfaceOrientation:(UIInterfaceOrientation)orientation duration:(NSTimeInterval)duration {
    [yourCustomViewObj setOrientation:orientation];
    [yourCustomViewObj setNeedsLayout];
}
于 2012-10-04T14:38:08.330 に答える