【发布时间】:2017-02-03 10:35:40
【问题描述】:
我正在尝试通过代码将子视图添加到具有约束的视图中。我取得了一些成功,但无论出于何种原因,尾随约束似乎都被完全忽略了。
我的代码:
leading_const = 16.f;
trailing_const = 16.f;
top_const = 12.f;
bottom_const = 12.f;
insertView.translatesAutoresizingMaskIntoConstraints = NO;
[view addSubview:insertView];
NSLayoutConstraint *leading = [NSLayoutConstraint constraintWithItem:insertView
attribute:NSLayoutAttributeLeading
relatedBy:NSLayoutRelationEqual
toItem:view
attribute:NSLayoutAttributeLeading
multiplier:1.f
constant:leading_const];
NSLayoutConstraint *trailing = [NSLayoutConstraint constraintWithItem:insertView
attribute:NSLayoutAttributeTrailing
relatedBy:NSLayoutRelationEqual
toItem:view
attribute:NSLayoutAttributeTrailing
multiplier:1.f
constant:trailing_const];
NSLayoutConstraint *top = [NSLayoutConstraint constraintWithItem:insertView
attribute:NSLayoutAttributeTop
relatedBy:NSLayoutRelationEqual
toItem:view
attribute:NSLayoutAttributeTop
multiplier:1.f
constant:top_const];
NSLayoutConstraint *height = [NSLayoutConstraint constraintWithItem:insertView
attribute:NSLayoutAttributeHeight
relatedBy:NSLayoutRelationEqual
toItem:nil
attribute:NSLayoutAttributeHeight
multiplier:1.f
constant:130.f];
[superView addConstraints:@[leading, trailing, top, height]];
结果:
感谢任何指导!
【问题讨论】:
-
您在哪个函数中添加约束?
-
你不应该将约束添加到视图吗?
-
你可以调用 NSLayoutConstraint.activate(@[leading, trailing, top, height])
-
尾随约束应为负值,才有效。试试吧
-
@Pavankumar 就是这样!!有趣的是,为什么它在代码中是负值,而在界面构建器中却是正值?
标签: ios objective-c autolayout