2014-12-05 165 views
1

为了清楚起见,我不问如何修改个别UISegmentedControl段或按钮的宽度。如何增加UISegmentedControl的总宽度?

我的最终目标是创建嵌入在UIScrollView中的UISegmentedControl。这UISegmentedControl将有能力无限增加其细分市场的数量。

为了实现这一点,我需要增加自身宽度UISegmentControl的,每次添加段时间。有什么方法可以增加总宽度没有重新创建一个全新的UISegmentedControl对象每次我添加一个段?

谢谢,提前!

+1

调整其帧?或者如果您使用Autolayout调整定义宽度的约束? – 2014-12-05 22:29:05

回答

1

@ 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?