2016-03-21 5 views
0

IBと自動レイアウトを使用してboundViewというビューを作成し、コントローラーで[self.boundView layoutIfNeeded]を呼び出し、self.boundView.frame.sizeをboundViewのサブビューのサイズを生成するメソッドに渡します。 CardView。プログラムを使用してサブビューを作成するには、iOS:自動レイアウトで制約されたフレームを使用してサブビューを作成する

PlayingCardView *playingCardView = [[PlayingCardView alloc]initWithFrame:frame]; 

を使用します。 NSLogを使用して、サブビューのサイズがスーパービューよりも小さいことを確認します。しかし、[self.boundView addSubview:CardView]を使用してサブビューを追加すると、それはスーパービューよりも大きい! 座標に何か問題がありますか?それとも、自動レイアウトをコードで作成したビューと組み合わせるのでしょうか?

+0

あなたは静的なデータと自動レイアウトを組み合わせてはいけません – techloverr

+0

実際に自動レイアウト変更フレームを実行時に... boundViewView.frame.sizeすると、実際にはIBのフレームが表示されます... autolayoutによって設定されたフレームはありません –

+0

Soつまり、自動レイアウトによって設定されたビューの正しいフレームを取得できないということですか?私は静的なフレームを使用してサイズを設定することができますか? –

答えて

1

あなたはこれをやっていますか?それがviewDidLoadの場合、自動レイアウトのサイズはまだ計算されていません。 viewDidLayoutSubviewsで試してみてください。

+0

私はすでに試してみましたが、私のメソッドで 'layoutIfNeeded'を呼び出そうとしています。でも、それでも動作しません。@Divyanshu Shamaがコメントで言ったことは正しいと思います。私はいつも私の 'boundView'よりも大きいIBのフレームを取得します。私は、自動レイアウトを使うのではなく、コードでフレームを設定する必要があります。 –

+0

まあ、あなたはいつもIBのサイズを取得するとは限りません - それは意味をなさないでしょう。ビューが配置された後に行うだけです。しかし、あなたの設定についてもっと知らなくても、これがあなたの問題であるかどうかは本当に分かりません。多分もっと多くのコードを提供できるかもしれません。また、あなたが何をしているか、つまり「コントローラの中で」というだけでなく、どのような方法で正確に教えてください。 – pajevic

+0

まあ、最後に私は問題を見つける。ちょうどあなたが答えて言ったように。私のコードをもう一度チェックし、私は 'viewDidLoad'でメソッドを呼び出すことがわかります。このメソッドでは' layoutIfNeeded'を呼び出します。サイズが計算されていない、私はいつも間違ったサイズを取得します。私は 'ViewDidLoad'で' layoutIfNeeded'を呼び出すことによってそれを修正しようとしますが、結果は明らかに上記と同じです。ちょうど、私は 'viewDidLayoutSubviews'そして最後に正しいフレームを取得します。たくさんのことがありがとう! –

関連する問題