2016-05-07 3 views
1

viewDidLoadには、UIViewをインスタンス化し、そのUIViewにグラデーションレイヤーを追加します。グラデーションレイヤが制約に準拠しないUIView

これはiPhoneでもうまくいきますが、iPadではUIViewは画面全体を埋めるために伸びません。 iPad simの次のスクリーンショットに注意してください。

iPad simulator screenshot

私は両方のプログラム的とXcodeを使用して制約を追加することを試みてきました。

CAGradientLayerを追加すると、UIViewはプログラムでもXcodeツールでも設定した制約に準拠していないようです。

サンプルコード:

gradientLayer = CAGradientLayer() 
gradientLayer.frame = self.view.bounds 
gradientLayer.locations = [0.5, 1.0] 
gradient_View.backgroundColor = UIColor.blueColor() 
let color1 = self.opus_Page_Background_Color.CGColor as CGColorRef 
let color4 = self.opus_Page_Tertiary_Color.CGColor as CGColorRef 
gradientLayer.colors = [color1, color4] 
self.gradient_View.frame = self.view.bounds 
self.gradient_View.layer.insertSublayer(gradientLayer, atIndex: 0) 
gradient_View.translatesAutoresizingMaskIntoConstraints = false 

let leadingConstraint = NSLayoutConstraint(item: gradient_View, attribute: NSLayoutAttribute.Leading, relatedBy: NSLayoutRelation.Equal, toItem: self.view, attribute: NSLayoutAttribute.Leading, multiplier: 1, constant: 0) 
      leadingConstraint.active = true 
      view.addConstraint(leadingConstraint) 

let trailingConstraint = NSLayoutConstraint(item: gradient_View, attribute: NSLayoutAttribute.Trailing, relatedBy: NSLayoutRelation.Equal, toItem: self.view, attribute: NSLayoutAttribute.Trailing, multiplier: 1, constant: 0) 
      trailingConstraint.active = true 
      view.addConstraint(trailingConstraint) 

let widthConstraint = NSLayoutConstraint(item: gradient_View, attribute: NSLayoutAttribute.Width, relatedBy: NSLayoutRelation.Equal, toItem: nil, attribute: NSLayoutAttribute.NotAnAttribute, multiplier: 1, constant: 100) 
      view.addConstraint(widthConstraint) 

let heightConstraint = NSLayoutConstraint(item: gradient_View, attribute: NSLayoutAttribute.Height, relatedBy: NSLayoutRelation.Equal, toItem: nil, attribute: NSLayoutAttribute.NotAnAttribute, multiplier: 1, constant: 100) 
      view.addConstraint(heightConstraint) 
      NSLayoutConstraint.activateConstraints([leadingConstraint, trailingConstraint, widthConstraint, heightConstraint]) 
+0

@arunの幅制約を削除してください – Alok

+0

解決策は、コードを 'viewDidLayoutSubviews'の中に入れることでした。 ANY制約が機能するかどうか確認しようとしていたので、私は制約を恣意的に保ちましたが、これらのヒントもありがとうございました。 –

答えて

0

は、最後の2つの制約を変更してみてください。幅と高さを一致させる代わりに、上部&下に固定します。問題はおそらくviewDidLoadのビューのwidth = X、height = Yですが、最終的なレイアウトではありません。 それでも問題が解決しない場合は、viewDidLayoutSubviewsに追加してみてください。

希望すると助かります!

1

先行制約と後続制約を追加しました。これは、ビューの幅を取得したことを意味します。したがって、幅の制約を追加する必要はありません。ストーリーボードから幅を削除するか、プログラムでこれまでに使用していた幅を削除します。 また、私は欠けているトップconstrai NTを見ることができます。それを解決する

関連する問題