解决IOS8.1中UIActionSheet与UIPickerView不兼容

在UIActionSheet中嵌入UIPickerView,美观漂亮。我自己的项目中也是这么用的,在IOS7.1之前都运行的非常完美,但是当系统升级到IOS8.1之后,运行出来的效果就非常的糟糕,ActionSheet不能够完全的显示出来内容。

  • 下面是IOS8.1中运行的效果

  • IOS8.1中ActionSheet与UIPIckerView不兼容效果图

    IOS8.1中ActionSheet与UIPIckerView不兼容效果图

  • 为什么UIActionSheet里面嵌入UIPickerView会不兼容IOS8.1呢

  •     官方API的描述是:UIActionSheet is deprecated. Use UIAlertController with a preferredStyle of UIAlertControllerStyleActionSheet instead.是因为UIActionSheet已经废弃了,应该用UIAlertController的UIAlertControllerStyleActionSheet样式来代替。
  • 那么在UIAlertController中嵌入UIPickerView可以解决问题吗?

  •     通过我自己的亲生实践证明,在UIAlertController中嵌入UIPickerView也不能达到完美的效果,加入到UIAlertController中的其他控件的显示位置和大小很难控制,这里就不贴代码了,有兴趣的同学可以自己研究一下,如果有好的结果也可以告诉我。
  • 那么到底怎么解决这个问题呢?

  •     我的思路是用UIView模拟UIActionSheet的效果,向UIView中加入UIPickerView。下面是用UIView模拟UIActionView+UIPickerView的效果图,运行效果非常完美。在IOS7和IOS8中都能过完美的运行。
    模拟UIActionSheet加UIPickerView的效果图

    模拟UIActionSheet加UIPickerView的效果图

  • 代码实现

  • demo

  •     总结:问题就这样通过最原始的方式解决了,当然从复杂度来讲比单纯的UIActionView中嵌入UIPickerView高,但是兼容性得到了保障。哪位大神如果能够通过UIALertController来实现这个效果请一定分享给大家,如果需要项目源代码可以留下你的邮箱。



      copyright@黑月神话,转载请注明出处:vjson.com

    解决IOS8.1中UIActionSheet与UIPickerView不兼容》上有5条评论

    发表评论