关于IOS Autolayout 的一点小记录

来源:互联网 发布:网络不可用是怎么回事 编辑:程序博客网 时间:2024/05/29 14:27

UIView *testView = [[UIView alloc] init];    testView.backgroundColor = [UIColor yellowColor];    [self.contentView addSubview:testView];    testView.translatesAutoresizingMaskIntoConstraints = NO;        [self.contentView addConstraint:[NSLayoutConstraint constraintWithItem:testView attribute:NSLayoutAttributeLeft relatedBy:NSLayoutRelationEqual toItem:self.contentView attribute:NSLayoutAttributeLeft multiplier:1 constant:0]];    [self.contentView addConstraint:[NSLayoutConstraint constraintWithItem:testView attribute:NSLayoutAttributeTop relatedBy:NSLayoutRelationEqual toItem:self.contentView attribute:NSLayoutAttributeTop multiplier:1 constant:0]];    [self.contentView addConstraint:[NSLayoutConstraint constraintWithItem:testView attribute:NSLayoutAttributeWidth relatedBy:NSLayoutRelationEqual toItem:self.contentView attribute:NSLayoutAttributeWidth multiplier:1/2 constant:0]];    [self.contentView addConstraint:[NSLayoutConstraint constraintWithItem:testView attribute:NSLayoutAttributeHeight relatedBy:NSLayoutRelationEqual toItem:self.contentView attribute:NSLayoutAttributeHeight multiplier:1/2 constant:0]];

今天有人问我如上代码添加约束后,会发现testView的宽高始终出不来。

原因其实很简单:Width 跟 Height 这两个约束,multiplier 是 0.5倍,有时候不能准确算出,我们会使用1/3这样来表示。那么问题来了。

1/2 在数学中是0.5  ,但是代码中是0,因为/两边都是整数。所以如果改成 1.0/2 这样就正确了。

0 0
原创粉丝点击