UIView会创建intrinsicContentSize
吗?
我创建了一个名为contentView的UIView。我没有给它约束尺寸:
UIView *contentView = [UIView new];
[contentView setTranslatesAutoresizingMaskIntoConstraints:NO];
contentView.backgroundColor = [UIColor orangeColor];
我创建了另一个名为 subview01 的 UIView 子视图。我给它加上约束大小并将其添加到我的 contentView 中:
UIImageView *imageView = [[UIImageView alloc] initWithImage:image];
[imageView setTranslatesAutoresizingMaskIntoConstraints:NO];
imageView.userInteractionEnabled = TRUE;
imageView.backgroundColor = [UIColor clearColor];
[imageView addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"H:[imageView(WIDTH)]"
options:0
metrics:@{@"WIDTH" : [NSNumber numberWithFloat:imageSize.width]}
views:NSDictionaryOfVariableBindings(imageView)]];
[imageView addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"V:[imageView(HEIGHT)]"
options:0
metrics:@{@"HEIGHT" : [NSNumber numberWithFloat:imageSize.height]}
views:NSDictionaryOfVariableBindings(imageView)]];
[contentView addSubview:imageView];
contentView没有增加任何大小。我认为intrinsicContentSize
应该计算显示所有子视图所需的大小并调整自身大小?就像UILabel将调整大小以显示其所有文本一样。
UIView
的子类并重写intrinsicContentSize
方法。 - Rudolf AdamkovičintrinsicContentSize
。例如,如果一个视图包含一个文本视图,您必须通过覆盖该方法来告诉视图应该是什么大小。 - Ozgur Vatansever