有没有其他人在iOS 8中使用弹出窗口中的UIDatePicker时遇到问题?突然间,我们的日期选择器显示不正确(请参见截图)。似乎日期选择器的一部分未被显示出来(但是,仍可与缺失部分进行交互以更改时间)。
我进行了一些测试,并且发现日期选择器在其他视图中可以完美显示,因此可能与弹出窗口或在非全屏幕视图中显示选择器有关。
有人找到了解决这些问题的方法或变通方法吗?
有没有其他人在iOS 8中使用弹出窗口中的UIDatePicker时遇到问题?突然间,我们的日期选择器显示不正确(请参见截图)。似乎日期选择器的一部分未被显示出来(但是,仍可与缺失部分进行交互以更改时间)。
我进行了一些测试,并且发现日期选择器在其他视图中可以完美显示,因此可能与弹出窗口或在非全屏幕视图中显示选择器有关。
有人找到了解决这些问题的方法或变通方法吗?
我在苹果开发者论坛上找到了解决方案(当我在 Stack Overflow 上遇到问题时,它是我的备用知识库)。
用户 Natsu 给出了以下解决方案:
在我的项目中也遇到了同样的问题。并且仅在 iPad 设备上出现问题(使用相同代码的 iPhone 没有问题)。据我所知,UIDatePicker 包含用于显示选择器内容的 UITableView 和 UITableViewCell,并且其背景颜色默认设置为白色。这就是出现此问题的原因。iOS 7 中 UIDatePicker 具有带有白色背景的 UITableViewCell,iOS 8 中 UIDatePicker 具有带有白色背景的 UITableView。因此,我的解决方案是使用 UIAppearance 将这些背景颜色设置为 nil,就像这样:
[[UITableView appearanceWhenContainedIn:[UIDatePicker class], nil] setBackgroundColor:nil]; // for iOS 8
[[UITableViewCell appearanceWhenContainedIn:[UIDatePicker class], [UITableView class], nil] setBackgroundColor:[UIColor colorWithWhite:0.0 alpha:0.0]]; // for iOS 7
我设置的值是iPhone上使用的颜色。我不确定这是否是解决问题的正确方法,但在我的环境中至少可以很好地工作。我不知道UIPickerView的问题是否由相同的原因引起。但检查视图层次可能会有所帮助。
由于使用了UIAppearance,您几乎可以将其放在任何地方。我将其放在我的表格单元格类的awakeFromNib中,它像魔法一样运行。谢谢Natsu!