@ MatthiasBauch的评论帮我追查整体解决方案,具体如下:
注:我使用的是自动布局,所以无论我用故事板,你就必须用替代它程序化等同。
1)首先,在故事板上拖出一个“分段控制”。
2)为刚刚添加的控件创建一个Outlet。
3)另外,按Ctrl +点击控制,并拖动到自己。然后点击“宽度”添加宽度约束。 4)打开文档大纲(编辑>“显示文档大纲”)
5)打开分段控件所在的“视图”,然后打开分段控件的下拉菜单(我的名字是“First,第二个“)。然后打开“约束”。
6)按住Ctrl并点击刚制作的“宽度”约束,然后拖到视图控制器上为它创建一个Outlet。这将允许您以编程方式调整宽度。
使用下面提到的文章,你可以作如下更新约束(使用动画...奖金!)
转到您要使用更新的宽度和执行方法如下:
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")
})
参考:
Are NSLayoutConstraints animatable?
调整其帧?或者如果您使用Autolayout调整定义宽度的约束? – 2014-12-05 22:29:05