我正在开发一个 iPhone 应用程序。在哪里,我想像UIPickerView
图像中那样。有可能改变成这样的UIPickerView
样子吗?!请指导我这样做!我在没有 XIB 的情况下创建它。
或者有没有办法让UIPickerView
皮肤透明?
提前致谢!!:-)
我正在开发一个 iPhone 应用程序。在哪里,我想像UIPickerView
图像中那样。有可能改变成这样的UIPickerView
样子吗?!请指导我这样做!我在没有 XIB 的情况下创建它。
或者有没有办法让UIPickerView
皮肤透明?
提前致谢!!:-)
我不知道这是否正确,但你可以设置你的UIPickerView
背景图片......我做过一次。
看到这个: -
//Make a view to set as background of UIPickerView
UIView * viewForPickerView = [[UIView alloc]initWithFrame:CGRectMake(0.0, 0.0, 320.0, 216.0)];
[viewForPickerView setBackgroundColor:[UIColor colorWithPatternImage:[UIImage imageNamed:@"pickerViewBackground.png"]]];
[[[pickerView subviews]objectAtIndex:2] addSubview: viewForPickerView];
//UIPickerView has 8 subviews like, background, rows, container etc.
// hide unnecessary subview
[(UIView*)[[pickerView subviews] objectAtIndex:3] setHidden:YES];
[(UIView*)[[pickerView subviews] objectAtIndex:5] setHidden:YES];
[(UIView*)[[pickerView subviews] objectAtIndex:6] setHidden:YES];
[(UIView*)[[pickerView subviews] objectAtIndex:7] setHidden:YES];
[(UIView*)[[pickerView subviews] objectAtIndex:8] setHidden:YES];
UILabel
现在在你UIPickerView
的 's上添加一个selectionIndicator
,并label
用作selectionIndicator
. 你可以用你自己的方式管理它。
谢谢!
UIPickerView 只不过是一个带有一个或多个 UITableView 以及背景和选择器视图的 UIView。
将来,当 Apple 决定以另一种方式实现它时,向 UIPicker 视图隐藏和添加视图可能会破坏您的代码。
使用 UITableView(s) 和您自己的自定义背景和选择器视图来实现您的控件可能是一个更好的主意。
在 UITableView(s) 上实现 UIPickerView 行为的一些技巧:
使用 ContentInset 确保滚动到顶部/底部时第一行/最后一行显示在中间。
在 UITableViewSource 上实现 tableView:didSelectRowAtIndexPath: 并在 UITableView 上调用 scrollToRowAtIndexPath 以在中间显示所选行。
在 UITableViewSource 上实现 scrollViewDidEndDecelerating 和 scrollViewDidEndDragging(其中 willDecelerate 为 false)。检测最靠近中间的行,将该行设置为选中,然后使用 UITableView 上的 selectRowAtIndexPath 将该行滚动到中间(或在该行已被选中时使用 scrollToRowAtIndexPath)。
在 selectRowAtIndexPath 和 scrollToRowAtIndexPath 中将 atScrollPosition 设置为TOP。这有点令人困惑,因为该行显示在中间,但 ContentInset 将顶部推到了视图的中间。
您可以使用 visibleCells 和 contentOffset 的框架检测 UITableView 上最靠近中间的行。可以通过对 indexPathsForVisibleRows 应用相同的索引来找到行的 NSIndexPath。
不幸的是 UIPickerView 不是高度可定制的,因此您最终可能会使用私有标头来修改外观(不推荐)或使用一些模拟 UIPickerView 行为但允许定制的第三方库。
看看这些。可能不是你想要的,但也可能有帮助:)