【问题标题】:iOS: UIPickerView default dimensionsiOS:UIPickerView 默认尺寸
【发布时间】:2012-07-16 17:33:13
【问题描述】:

我想知道内部选择器部分两侧的深灰色框的宽度以及组件之间分隔符的宽度。这将是默认设置(例如,.xib 中显示的内容)。或者,如何以编程方式找到这些值。谢谢

为了澄清,我正在寻找这些值的“建议最小值”可能是什么。我将我的 UIPickerView 放在一个弹出窗口中,并且 UIPickerView 的宽度超过 320 像素(这是 .xib 作为“默认值”给出的)。我想知道这些值,以便我可以将它们添加到弹出框的宽度,以确保它不会切断 UIPickerView 右侧的组件。

【问题讨论】:

    标签: objective-c ios 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 提取的。

    【讨论】:

    • 好的,这很有帮助!但我想更好地改写我的问题,我正在寻找这些值的“建议最小值”。我将我的 UIPickerView 放在一个弹出窗口中。我的 UIPickerView 有很多组件,所以它比默认宽度(在 .xib 中;320 像素)更宽。我想知道侧面深灰色区域的建议最小值是多少,以便在创建弹出框时将其添加到弹出框宽度,这样它就不会挤压选择器并切断右侧的组件。有没有办法以编程方式找到它?
    • 我不相信苹果官方已经发布了任何最小值。我相信,更重要的是它在保持 1. 功能 2. 不丑的同时能变得多小。我只会玩不同的尺寸,直到你达到最小的尺寸。然后将其硬编码为最低阈值。
    猜你喜欢
    • 2017-12-19
    • 2015-03-12
    • 2017-09-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-06-06
    • 2019-01-09
    相关资源
    最近更新 更多