2016-03-23 11 views
0

次のコードを使用して、UIView内に子UIView(白いボックス)を設定しました。親ビューの内部にuiviewのサイズを設定する方法は?

float x = 10.0; 
float y = 40.0; 
float w = self.view.frame.size.width - 20.0f; 
float h = self.view.frame.size.height/3.0; 
UIView *whiteBox = [[UIView alloc] initWithFrame:CGRectMake(x, y, w, h)]; 

基本的に、親UIViewの両余白に10ピクセルの白いボックスを描画したいとします。ただし、白いボックスの右側は常に親ビューの境界を超えています。 self.view.frame.size.widthが実際のビューの幅よりも大きいようです。私はシミュレータとしてiphone5Sを使用しています。 ホワイトボックスの正しい幅をどのように設定できるかを知りたいだけです。

答えて

0

どのような方法でこれをやっていますか?サイズ変更して画面に収まる前に、ストーリーボードから親ビューの幅の値を取得している可能性があります。

このような問題を回避するには、エラーの起こりやすいこれらのタイプの計算を提供する代わりに、autolayoutを使用して読み込むのがベストです。できれば、ストーリーボードにuiviewを追加し、先行、末尾、上、下の制約を追加して、10の定数でスーパービューします。

+0

幅は600で、ViewDidLoadメソッド内にあります。はい、私は既に行われているストーリーボードで自動レイアウトを使用できます。私は、コード内でこれをどうやって達成するのか不思議です。もちろん、自動レイアウト制約をプログラミングで使用することはできます。私はちょうどuiviewのフレームの幅が私の現在のシミュレータ(Iphone5S)に適していないように見える理由を知りたいです。 – mmjuns

+0

'ViewDidLoad'があなたの問題です。この方法の後、フレームは設定されません。 'ViewWillAppear:'または 'ViewDIdAppear:'に移動してみてください。http://stackoverflow.com/questions/6757018/why-am-i-having-to-manually-set-my-views-frame-in-viewdidload詳細情報 –

0

ビューを調整するために左マージンと右マージンのような制約を使用できますスーパービューに関しては自動的に自動的に更新されます。

+0

はい。私はこれをしました。私のコードが正しく動作しない理由を知りたいだけです。現在のシミュレータでは幅が正しくないようです。 – mmjuns

関連する問題