2012-07-16 87 views
1

我想知道內部拾取器部件兩側的深灰色框架的寬度以及組件之間分隔器的寬度。這將是默認設置(例如,.xib中顯示的內容)。或者,如何以編程方式查找這些值。謝謝iOS:UIPickerView默認尺寸

爲了澄清,我正在尋找什麼「建議的最低限度」可能是這些值。我將UIPickerView放入彈出窗口,UIPickerView的寬度大於320 px(這是.xib給出的默認值)。我想知道這些值,所以我可以將它們添加到popover的寬度,以確保它不會切斷UIPickerView右側的組件。

回答

1

那麼這可能有點棘手,因爲Picker可以擁有動態數量的組件。所以爲了找到寬度,你必須考慮到組件的數量。這可以這樣完成:

 NSInteger n = picker.numberOfComponents;   

     const CGFloat separatorWidth = 8.0f; 
     const CGFloat sectionExceedWidth = -2.0f; 
     CGFloat totalWidth = picker.bounds.size.width; 
     CGFloat panesWidth = totalWidth - separatorWidth * (n - 1); 
     for (NSInteger i = 0; i < n; i++) { 
      CGFloat sectionWidth = [picker rowSizeForComponent:i].width + sectionExceedWidth; 
      panesWidth -= sectionWidth; 
     } 
     CGFloat leftPaneWidth = ceilf(panesWidth * 0.5f); 
     CGFloat rightPaneWidth = panesWidth - leftPaneWidth; 
     CGFloat totalHeight = picker.bounds.size.height; 
     CGRect totalRect = CGRectMake(0, 0, totalWidth, totalHeight); 

其中找到左右窗格寬度並且分隔符大小是靜態的。

這是從here拉。

+0

好的,這是有幫助的!但我想更好地改寫我的問題,我正在尋找這些值的「建議最小值」。我把我的UIPickerView放入popover中。我的UIPickerView有很多組件,所以比默認寬度(在.xib; 320 px)更寬。我想知道兩邊暗灰色部分的建議最小值是如何在創建彈出窗口時將其添加到彈出寬度,因此它不會擠壓拾取器並切斷右側的組件。有沒有辦法以編程方式查找? – alsuhr 2012-07-17 13:30:54

+0

我不相信Apple已經正式推出任何最低價值。我相信這更多的是它能夠獲得多小的功能,而不是醜陋的。我只是玩弄不同的尺寸,直到你達到最小的可能。然後,將其作爲最低閾值進行硬編碼。 – random 2012-07-23 20:04:34