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 的自定义外观;的主要内容,如果未能解决你的问题,请参考以下文章
ios 7 中带有一个组件的自定义 UIPickerView
iOS 7 用 UIPickerView 打开 UITableViewController 很慢