Closed sunimp closed 5 years ago
可以确定的是, 与 UIImageView+QMUI.h
分类有关, 我在注释了 + (void)load
之后是可以正常表现的, 我注意到在此分类中 QMUI hook 了 UIImageView 的部分方法:
initWithImage:
initWithImage:highlightedImage:
initWithFrame:
initWithCoder:
setImage:
image
displayLayer:
didMoveToWindow
setHidden:
setAlpha:
setFrame:
sizeThatFits:
其中错误是由 displayLayer:
方法抛出的, 似乎是 QMUI 把 Core Image 生成 CIImage 转化成的 UIImage 判定为了 qimgv_animatedImage
? 我目前还不是很清楚为什么会这样, 各位大佬有知道的可以提供一些信息或者思路吗? 感谢你们提供开源组件, 它为我节省了很多时间并且提供了很多惊喜, 鞠躬!
非常感谢!
另外, 如果把 CIImage
通过 CIContext
创建为 CGImageRef
然后再通过 CGContextDrawImage
绘制成 bitmap
, 然后再生成 UIImage
就没问题了...... 我昨天是这么解决的😂
Bug 表现 问题的具体描述 通过 Core Image 生成二维码, 在转为 UIImage 对象去赋值给 UIImageView 时, 二维码图像无显示, 控制台打印方法 hook 的报错和调用栈信息, 具体如下:
截图 Xcode 控制台的错误信息和 Bug 现场的界面截图以及有问题的代码截图
方法 hook 抛出的错误:
堆栈信息:
模拟器表现截图:
上图表现的代码部分:
如何重现
代码
预期的表现 正常情况下, 是可以正常生成并显示, 新建一个项目是可以正常生成并显示的, 下图为不引入 QMUI 或注释掉
UIImageView+QMUI
分类中的+ (void)load
方法时的表现:其他信息