Je suis en train de centrer une image à une vue mais je suis en train de error..this est mon code:Obtenir l'erreur de temps lors de l'ajout de contraintes
let markerimage = #imageLiteral(resourceName: "ic_new_mark_icon")
let size = CGSize(width: 60, height: 60)
var newimage = imageWithImage(image: markerimage, scaledToSize: size)
var imageview = UIImageView(image: newimage)
self.view.addSubview(imageview)
let xConstraint = NSLayoutConstraint(item: imageview, attribute: .centerX, relatedBy: .equal, toItem: self.view, attribute: .centerX, multiplier: 1, constant: 0)
let yConstraint = NSLayoutConstraint(item: imageview, attribute: .centerY, relatedBy: .equal, toItem: self.view, attribute: .centerY, multiplier: 1, constant: 0)
imageview.addConstraint(xConstraint)
imageview.addConstraint(yConstraint)
et mon erreur est
2016-12-22 16:29:11.305417 Googlemappractice[21426:362773] [LayoutConstraints] The view hierarchy is not prepared for the constraint: <NSLayoutConstraint:0x600000285f00 UIImageView:0x7ff772f15560.centerX == UIView:0x7ff772c0bd30.centerX (inactive)>
When added to a view, the constraint's items must be descendants of that view (or the view itself). This will crash if the constraint needs to be resolved before the view hierarchy is assembled. Break on -[UIView(UIConstraintBasedLayout)
Vous devez ajouter ces contraintes à self.view, pas à l'affichage de l'image. Aussi, assurez-vous que vous avez désactivé le drapeau autoresize (vous avez probablement, mais je n'ai pas vu ce code). – dfd
Depuis iOS8, il a été possible d'activer simplement les contraintes au lieu de les ajouter aux vues. Définissez 'xConstraint.isActive = true' et' yConstraint.isActive = true'. – vacawama