【发布时间】:2020-06-15 14:45:49
【问题描述】:
如何为 iPhone X 及更高版本更新此约束代码?这段代码不支持新的视图大小,我觉得它可以稍微改变一下以适应新的规范。是否应该在保存addConstraint 的函数中进行更新?
@implementation UIView (JSQMessages)
- (void)jsq_pinSubview:(UIView *)subview toEdge:(NSLayoutAttribute)attribute
{
[self addConstraint:[NSLayoutConstraint constraintWithItem:self
attribute:attribute
relatedBy:NSLayoutRelationEqual
toItem:subview
attribute:attribute
multiplier:1.0f
constant:0.0f]];
}
- (void)jsq_pinAllEdgesOfSubview:(UIView *)subview
{
[self jsq_pinSubview:subview toEdge:NSLayoutAttributeBottom];
[self jsq_pinSubview:subview toEdge:NSLayoutAttributeTop];
[self jsq_pinSubview:subview toEdge:NSLayoutAttributeLeading];
[self jsq_pinSubview:subview toEdge:NSLayoutAttributeTrailing];
}
@end
【问题讨论】:
-
你能解释一下问题是什么吗?短语“新的视图大小”或“新规范”是没有意义的。代码完全按照它所说的去做:它将子视图完全固定到父视图 (
self)。它的工作方式与以往完全相同;没有什么可以“更新”的。如果你想做其他事情——我敢打赌你会这样做,尽管你没有解释——然后做其他事情。 -
我还要补充一点,没有人再使用 NSLayoutConstraint 初始化程序了。使用 anchor 表示法。如果您想要更多快捷方式,可以使用 SnapKit 之类的库(尽管我个人不赞成为如此重要的东西插入额外的依赖项)。
标签: objective-c constraints jsqmessagesviewcontroller