Ich setze die .Width und .Top NSLayoutConstraints auf eine UIImgeView-Instanz innerhalb meines View Controllers updateViewConstraints()
. Im XCode Visual Debugger kann ich sehen, dass die Constraints tatsächlich gesetzt sind, aber aus irgendeinem Grund werden sie nicht verwendet (?) Sie erscheinen un (Content-Größe) und sind ausgegraut. Wenn ich die Beschränkungen mit NSLog ausgabe, kann ich auch sehen, dass sie gesetzt sind, aber irgendwie behält das Bild die ursprüngliche Größe bei ... Was bedeutet das?Breite und Höhe NSLayoutConstraints auf UIImageView funktioniert nicht
constraints in parent: [<NSLayoutConstraint:0x7b379590 UIImageView:0x7af897b0.centerX == UIView:0x7b37d2e0.centerX>,
<NSLayoutConstraint:0x7b36e3d0 V:|-(0)-[UIImageView:0x7af897b0] (Names: '|':UIView:0x7b37d2e0)>]
constraints in view: [<NSContentSizeLayoutConstraint:0x7ae892b0 H:[UIImageView:0x7af897b0(301)] Hug:251 CompressionResistance:750>,
<NSContentSizeLayoutConstraint:0x7ae834e0 V:[UIImageView:0x7af897b0(365)] Hug:251 CompressionResistance:750>]
Code, der die Einschränkungen setzt:
/// Image view with the character + ellipse
@IBOutlet weak var charImageView: UIImageView!
override func updateViewConstraints() {
super.updateViewConstraints()
charImageView.widthLayoutConstraint?.constant = 301.0
charImageView.heightLayoutConstraint?.constant = 365.0
}
Die Erweiterung i widthLayoutConstraint
zu bekommen verwenden, um und heightLayoutConstraint
extension UIView{
/**
Gets the width layout constraint defined as the NSLayoutConstraint whose first item is self and first attribute is Height
*/
var heightLayoutConstraint:NSLayoutConstraint? {
get{
for constraint in constraints {
if constraint.firstItem as? UIView == self &&
constraint.firstAttribute == NSLayoutAttribute.Height
{
return constraint
}
}
return nil
}
}
/**
Gets the width layout constraint defined as the NSLayoutConstraint whose first item is self and first attribute is Width
*/
var widthLayoutConstraint:NSLayoutConstraint? {
get{
for constraint in constraints {
if constraint.firstItem as? UIView == self &&
constraint.firstAttribute == NSLayoutAttribute.Width
{
return constraint
}
}
return nil
}
}
}
Dies ist, wie die Layoutbeschränkungen zunächst hinzugefügt mit IB. Wie Sie sehen können, werden sie für die Klasse der kompakten Breite hinzugefügt, die ich benutze, wenn ich das Problem sehe (iPhone4S Simulator).
Die Einschränkungen sind bereits über IB hinzugefügt und ich aktualisiere ihre Konstante mit Code. Der Debugger zeigt deutlich, dass die Konstante IS IN FACT AKTUALISIERT ist, aber irgendwie wird das Bild in Originalgröße gezeichnet.
Ich bin Einstellungen dieser c Onlineseiten PROGRAMMATISCH in updateViewConstraints() –
@JuanCarlosOspinaGonzalez Können Sie bitte Ihren Code zeigen? – Kampai
bitte sehen. Vielen Dank. –