UIView和intrinsicContentSize

Pad*_*215 5 objective-c ios autolayout nslayoutconstraint

UIView是否创造了intrinsicContentSize

我创建了一个UIView contentView.我不给它约束大小:

UIView *contentView = [UIView new];
[contentView setTranslatesAutoresizingMaskIntoConstraints:NO];
contentView.backgroundColor = [UIColor orangeColor];
Run Code Online (Sandbox Code Playgroud)

我创建了另一个UIView subview01.我给它约束大小并将其添加到我的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];
Run Code Online (Sandbox Code Playgroud)

contentView确实没有任何大小.我想intrinsicContentSize是假设要计算显示所有子视图所需的大小并自行调整大小?就像UILabel如何调整大小以显示其所有文本一样?

rde*_*mar 9

不,UIView没有intrinsicContentSize.按钮和标签可以,因为系统很容易根据字符串和/或图像来计算大小.对于UIView,通常需要4个约束来完全描述其位置和大小.

  • 或者你可以继承`UIView`并覆盖`intrinsicContentSize`方法. (9认同)