swizzle 一时爽,UIActivityViewController bug 无处找

  1. 多个库的 swizzle 重复造成的冲突。
  2. 导致系统方法出现异常。

针对 1 之前有篇文章介绍过,这里着重介绍下第二种情况。

通常想要分享多张图片,会使用系统的类 UIActivityViewController。我也是使用这个类进行分享的时候,发现通过信息分享图片右上角的取消按钮不见了,请看下图:

正常情况下,显示如下:
正常情况

这是我遇到的情况:
非正常情况

这里很明显是导航栏上的显示出现问题,所以,优先从代码关于导航栏修改方面入手,定位 bug 出现的原因,最终发现是第三方库 FDFullscreenPopGesture 导致的。而且这个库就是使用 swizzle 方法替换系统方法,导致对 UIActivityViewController 的使用造成的影响。其实影响的代码就是

[strongSelf setNavigationBarHidden:viewController.fd_prefersNavigationBarHidden animated:animated];

也就是影响到了系统导航栏的隐藏与显示逻辑。从上面两个图的界面也可以看到,正常情况下系统导航栏是隐藏的,所以界面偏移正常,而非正常情况下系统导航栏是显示的,所以界面会向下偏移。当然通过运行代码查看 view 层级会更加清楚。测试代码在这里

ps: 测试代码只用来测试通过信息分享,目前微信、qq分享不支持直接分享图片了,可以通过自定义 item 并遵守 UIActivityItemSource 协议实现。
pps: 上面说的是信息分享遇到的 bug ,之前还有一个分享微信朋友圈右侧文字不显示的问题,最终发现是 [[UITextField appearance] setTintColor:color]; 导致的。当然现在微信朋友圈分享不支持多图,所以也没必要再关注这种情况了。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值