我有一个自定义UIView,它有2个UILabel,我在XIB中设计过。已经为子项设置了正确的约束,使它们正确对齐等。在XIB中,我的设计是基于屏幕宽度为200并且2个标签的约束相应地设置为其超级视图的假设。
-(id)initWithFrame:(CGRect)frame {
self = [super initWithFrame:frame];
if (self) {
[[NSBundle mainBundle] loadNibNamed:@"MyCustomView" owner:self options:nil];
[self addSubview:self.view];
//_intrinsicContentSize = self.bounds.size; // tried to return this as well
}
return self;
}
现在我以编程方式分配此视图,并将其作为子视图添加到我的视图控制器中。如果我将视图的帧更改为300,则子视图框将更改为300,但具有约束的2个标签仅限于200的宽度。
vewOneTouch = [[OneTouchView alloc] initWithFrame:CGRectMake(0, CGRectGetMinY(vewBottom.frame)-50, CGRectGetWidth(scwBaseView.frame), 50)];
[scwBaseView addSubview:vewOneTouch];
更改自定义视图框架时,为什么约束条件没有开始,并且更改子视图中所有项目的布局?