2016-05-07 4 views
1

In viewDidLoad instanziiere ich einen UIView und füge diesem UIView einen Farbverlaufslayer hinzu.UIView mit Farbverlaufsschicht, die den festgelegten Bedingungen nicht entspricht

Dies funktioniert gut auf dem iPhone, aber auf dem iPad, UIView erstreckt sich nicht, um den gesamten Bildschirm zu füllen. Bitte beachten Sie den folgenden Screenshot für iPad sim.

iPad simulator screenshot

Ich habe das Hinzufügen Einschränkungen versucht sowohl programmatisch und von XCode verwenden.

Es scheint, dass, sobald ich die CAGradientLayer hinzufügen, die UIView nicht mit den Einschränkungen übereinstimmt, die ich entweder programmgesteuert oder mithilfe von XCode-Tools festgelegt habe.

Beispielcode:

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

bitte entferne width constraint wie per @arun – Alok

+0

DIE LÖSUNG war, den Code in 'viewDidLayoutSubviews' zu setzen. Ich habe die Einschränkungen willkürlich eingehalten, weil ich versucht habe zu sehen, ob ALLE Einschränkungen funktionieren würden, aber danke auch für diese Tipps. –

Antwort

0

Versuchen Sie, die letzten beiden Bedingungen zu ändern. Anstatt die Breite und Höhe anzupassen, stecken Sie es nach Oben & Unten. Das Problem ist wahrscheinlich, dass Ihre Ansicht in viewDidLoad width = X, height = Y hat, aber das ist nicht das endgültige Layout. Wenn das nicht funktioniert, versuche es in viewDidLayoutSubviews hinzuzufügen.

Hoffe es hilft!

1

Sie haben eine führende und nachfolgende Einschränkung hinzugefügt, was bedeutet, dass Sie die Breite der Ansicht haben. Es ist also nicht notwendig, eine Breitenbeschränkung hinzuzufügen. Entferne die Breite vom Storyboard oder programmatisch, egal welche du verwendest. Auch ich konnte einen fehlenden oberen constri nt sehen. Entwirf das auch

Verwandte Themen