UIPickerView 的自定义外观;

Posted

技术标签:

【中文标题】UIPickerView 的自定义外观;【英文标题】:Custom Look & Feel of UIPickerView; 【发布时间】:2012-04-18 07:26:05 【问题描述】:

我想要一个 UIPickerView 在下面的设计中;

http://dl.dropbox.com/u/53051470/Screen%20shot%202012-04-18%20at%2012.02.36%20PM.png (对不起,作为新用户,这里不能粘贴图片)

我也阅读了有关同一主题的其他问题,并尝试实施 pickerView:viewForRow:forComponent:reusingView: 方法一样,但没有得到实际结果;

要求就像选择的值应该显示在带有复选标记图像的绿色条中,并以白色显示;此外,当用户开始滚动选择器时,进入绿色条内的任何值都应变为绿色,离开绿色条的任何值都应变为黑色;

有什么建议吗?

亲切的问候;

【问题讨论】:

【参考方案1】:

你应该使用方法

- (UIView *)pickerView:(UIPickerView *)pickerView viewForRow:(NSInteger)row forComponent:(NSInteger)component reusingView:(UIView *)view

并决定突出显示哪一行

- (UIView *)pickerView:(UIPickerView *)pickerView viewForRow:(NSInteger)row forComponent:(NSInteger)component reusingView:(UIView *)view
   
        // i use a UILabel instead of your **custom UIView** , you may add a tick in you custom view

        UILabel *testRow = view?(UILabel *)view:[[[UILabel alloc] initWithFrame:CGRectMake(0,0, 140, 40)] autorelease];
        testRow.font = [UIFont fontWithName:[testArray objectAtIndex:row] size:16];
        testRow.text = [fontsArray objectAtIndex:row];
        testRow.backgroundColor = [UIColor clearColor];

        if ( row == selectedRow )
        
            testRow.backgroundColor = [UIColor greenColor];
        

        return testRow;

不要忘记将 showSelectionIndicator 设置为 NO

pickView.showsSelectionIndicator = NO;

【讨论】:

【参考方案2】:

UIPickerView 多选行为,无需在pickerview前面添加其他视图,使用:https://github.com/alexleutgoeb/ALPickerView

高度赞赏改进!

【讨论】:

我想我不是在谈论 UIPickerView 的多选行为;如果您提到的库可以创建具有所需设计的选择器,请从那里发布一些示例代码; 您从该库左上角的链接下载代码,zip 文件可用。

以上是关于UIPickerView 的自定义外观;的主要内容,如果未能解决你的问题,请参考以下文章

Swift 中 UIPickerView 的自定义数据源类

ios 7 中带有一个组件的自定义 UIPickerView

iOS 7 中的自定义 UIPickerView 崩溃

iOS 7 用 UIPickerView 打开 UITableViewController 很慢

具有三个组件的自定义 UIPickerView,每个组件在选择指示器上显示标签

iOs5,试图了解 UIPickerView 以及如何将其连接到我的自定义类