Centering subview's X in autolayout throws “not prepared for the constraint”

前端 未结 8 1251
予麋鹿
予麋鹿 2020-11-30 02:09

I have a custom UIView subclass which is being initialized via a nib.

In -awakeFromNib, I\'m creating a subview and attempting to center it in its super

8条回答
  •  無奈伤痛
    2020-11-30 02:59

    Short answer: swap parent and child view.
    Assuming self is the parent view:

    • bad: [subview addConstraint [NSLayoutConstraint constraintWithItem:self...

    • good: [self addConstraint [NSLayoutConstraint constraintWithItem:subview...


    Swift

    subview.translatesAutoresizingMaskIntoConstraints = false
    self.addConstraints(NSLayoutConstraint.constraintsWithVisualFormat(
        "H:|-0-[subview]-0-|",
        options: .DirectionLeadingToTrailing,
        metrics: nil,
        views: ["subview":subview]))
    

    Obj-C

    [subview setTranslatesAutoresizingMaskIntoConstraints:NO];
    [self addConstraints:[NSLayoutConstraint
                          constraintsWithVisualFormat:@"H:|-0-[subview]-0-|"
                          options:NSLayoutFormatDirectionLeadingToTrailing
                          metrics:nil
                          views:NSDictionaryOfVariableBindings(subview)]];
    

提交回复
热议问题