【发布时间】:2012-12-03 09:25:19
【问题描述】:
我正在尝试创建一个带有按钮的可滚动条(类似于UISegmentedControl)。超级视图是UIScrollView。一旦按钮不适合滚动视图,滚动视图应该是可滚动的。到目前为止,几乎一切正常:
有很多按钮(向右滚动):
按钮不多:
现在,我的目标是,如果所有按钮都有空间,它们应该均匀分布在整个 320 像素视图中。 如何为按钮之间的空间定义约束?
现在,我正在使用以下约束(self 是 UIScrollView):
UIView *firstButton = self.buttons[0];
[self.buttonConstraints addObjectsFromArray:[NSLayoutConstraint constraintsWithVisualFormat:@"|-(5)-[firstButton]" options:0 metrics:nil views:NSDictionaryOfVariableBindings(firstButton)]];
UIView *lastButton = [self.buttons lastObject];
[self.buttonConstraints addObjectsFromArray:[NSLayoutConstraint constraintsWithVisualFormat:@"[lastButton]-(5)-|" options:0 metrics:nil views:NSDictionaryOfVariableBindings(lastButton)]];
UIView *previousView = nil;
for (UIView *view in self.buttons) {
if (previousView) {
[self.buttonConstraints addObjectsFromArray:[NSLayoutConstraint constraintsWithVisualFormat:@"[previousView]-(5)-[view]" options:0 metrics:nil views:NSDictionaryOfVariableBindings(previousView, view)]];
}
previousView = view;
}
如果我将超级视图的类型从UIScrollView 更改为UIView,我会得到以下结果,但仍然不是我想要的,但至少它会查找将其与右边缘(有道理,滚动视图不会发生这种情况,因为内容大小是自动设置的):
有什么想法吗?
【问题讨论】:
-
当你说“在整个 320px 视图中均匀分布”时,你的意思是每个按钮之间的空间都将具有相同的宽度,对吗?在您的示例代码中,您应用约束将每个视图水平间隔 5 点。 5 点是猜测,还是你确定你的 4 个按钮的宽度加上 5 个 5 点间距的实例加起来等于超级视图的宽度?
标签: ios cocoa-touch autolayout