2014-12-05 54 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?