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 这样就正确了。