关于IOS Autolayout 的一点小记录

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

你可能感兴趣的:(关于IOS Autolayout 的一点小记录)