那麼這可能有點棘手,因爲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拉。
好的,這是有幫助的!但我想更好地改寫我的問題,我正在尋找這些值的「建議最小值」。我把我的UIPickerView放入popover中。我的UIPickerView有很多組件,所以比默認寬度(在.xib; 320 px)更寬。我想知道兩邊暗灰色部分的建議最小值是如何在創建彈出窗口時將其添加到彈出寬度,因此它不會擠壓拾取器並切斷右側的組件。有沒有辦法以編程方式查找? – alsuhr 2012-07-17 13:30:54
我不相信Apple已經正式推出任何最低價值。我相信這更多的是它能夠獲得多小的功能,而不是醜陋的。我只是玩弄不同的尺寸,直到你達到最小的可能。然後,將其作爲最低閾值進行硬編碼。 – random 2012-07-23 20:04:34