要事先明确,我不会询问如何修改各个UISegmentedControl
细分或按钮的宽度。
我的最终目标是在UISegmentedControl
中创建一个UIScrollView
。此UISegmentedControl
将能够无限期地增加其细分数量。
要完成此操作,每次添加细分时,我都需要增加UISegmentControl
本身的 总 宽度。有没有什么办法可以增加 总宽度 ,而无需在每次添加细分时重新创建全新的UISegmentedControl
对象?
提前谢谢!
答案 0 :(得分:1)
@MatthiasBauch的评论帮助我追踪整个解决方案,详情如下:
注意 :我正在使用Autolayout,因此无论我在哪里使用Storyboard,您都必须使用程序化的等效替换它。
1)首先,在故事板上拖出“分段控件”。
2)为刚刚添加的控件创建一个插座
3)此外,按住Ctrl键并单击控件,然后拖动到自身。然后单击“宽度”以添加宽度约束。
4)现在,打开文档大纲(编辑器>“显示文档大纲”)
5)打开分段控制所在的“视图”,然后打开分段控件的下拉列表(默认情况下,我的名称为“First,Second”)。然后打开“约束”。
6)按住Ctrl并单击刚刚创建的“宽度”约束,然后将其拖动到视图控制器以为其创建插座。这将允许您以编程方式调整宽度。
使用下面提到的文章,您可以按如下方式更新约束(使用动画...奖励!)
转到要用于更新宽度的方法,然后执行以下操作:
let desiredWidthChange = 30.0
self.widthConstraint.constant =
self.mySegmentedControl.constant + desiredWidthChange
self.mySegmentedControl.setNeedsUpdateConstraints()
UIView.animateWithDuration(0.5, animations: { () -> Void in
self.mySegmentedControl.layoutIfNeeded() // Captures all of the frame changes.
println("Width updated successfully")
})