【发布时间】:2015-05-13 04:42:38
【问题描述】:
我在UISegmentedControl 中为段设置了自定义宽度。因此,SegmentedControl 不使用auto-layout。 (在故事板中,我在 SegmentedControl 的所有 4 面都应用了 constraint。)
这是我的代码:
CGFloat segmentWidth = self.segment.frame.size.width;
[self.segment insertSegmentWithTitle:@"titleName" atIndex:2 animated:NO];
[self.segment setWidth:segmentWidth / 6 forSegmentAtIndex:1];
[self.segment setWidth:segmentWidth / 6 forSegmentAtIndex:2];
[self.segment setWidth:segmentWidth / 3 forSegmentAtIndex:0];
这里有一张图片来说明这段代码的作用:
有没有办法将auto-layout 添加到segments?
【问题讨论】:
-
发布你的自动布局截图,看来你的约束是问题
-
Auto-layout应用于整个SegmentedControl,但不应用于单个segments。因此,当包含SegmentedControl的view变宽时,segments的宽度不同,最后一个segment变宽,而不是所有segments变宽。我知道这有点令人困惑。让我知道你是否理解 -
您可能无法使用自动布局设置单个段。这是从Apple's doc 引用的:UISegmentedControl 对象会自动调整分段大小以按比例适应其父视图,除非它们设置了特定的宽度。 类似于
UITableViewCell的textLabel,Apple 处理一些GUI 的一致性。如果您想对其进行更多控制,您可以随时使用例如按钮制作自定义 SegmentControl。 -
你想实现什么,那么你也可以发布图片
-
这个问题我们好像见过:stackoverflow.com/questions/30179886/…仔细看我的回答。您对分段大小的设置必须响应自动布局对分段控件宽度的更改;它不能在它之前。
标签: ios objective-c autolayout uisegmentedcontrol