我想要完成的事情似乎很简单,但我已经做了一整天了,我无法弄清楚。
我有一个带有分页滚动视图的场景的故事板(尚未使用自动布局)。我还有 2 个 XIB,我在代码中实例化。第一个 XIB (A) 有一个UILabel
和一个泛型UIView
。第二个 XIB (B)UIButton
在 + 排列中只有 5 秒。最终目标是将B加载到A中的通用视图中(水平居中和标签下方的“默认值”),并使A在滚动视图中占据整个页面。
当我调整 XIB A 的视图大小时,通用视图的大小会扩大和缩小,但始终保持标签下方的默认值。当我调整 XIB B 的视图大小时,按钮排列保持居中(这是我想要的)。这是我想要的行为。
但是,使用以下代码,它不起作用:
View A *viewA = [[ViewA alloc] initWithFrame:CGRectZero];
viewA.textLabel.text = @"A label with a rather long text";
ViewB *viewB = [[ViewB alloc] initWithFrame:CGRectZero];
[viewA setTranslatesAutoresizingMaskIntoConstraints:NO];
[viewB setTranslatesAutoresizingMaskIntoConstraints:NO];
[viewA.customView addSubview:viewB]; // customView is the generic view
这给了我以下信息:
(白色区域是滚动视图,红色区域是视图A,绿色区域是视图B。)
我尝试添加一个约束,让视图 B 占据其父视图的整个宽度:
[viewA.customView addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"|[viewB]|" options:0 metrics:0 views:NSDictionaryOfVariableBindings(viewB)]];
但这会导致:
我该怎么做才能让按钮在绿色区域居中?我不在乎绿色区域是否完全被红色区域覆盖,或者红色区域是否正好位于绿色区域的中心。