IOS 14 中未显示 JSQMessageViewController 集合单元格中的媒体项
Media Items in JSQMessageViewController's Collection cells are not showing in IOS 14
我正在使用 JSQMessageViewController,但我面临的问题是(仅在 ios14 中)我无法在设备中看到图像、视频和音频等媒体项目,尽管这些视图正在生成调试视图层次结构。请参阅下面的附图:-
调试视图层次结构截图:
这是集合视图单元格中 UIImage 的描述:
>
附上屏幕截图:
您可以看到视图已生成 space 图片,但未显示!
有人遇到这个问题吗?我怎么解决这个问题。此问题发生在 iOS 14 中,它在 iOS 13 中完美运行。
您需要在 JSQMessagesMediaViewBubbleImageMasker.m
中覆盖
方法 - (void)jsq_maskView:(UIView *)view withImage:(UIImage *)image 并更改行:
view.layer.mask = imageViewMask.layer;
成为
view.maskView = imageViewMask;
我建议您为此使用类别。对我来说这就是解决方案。
为了向后兼容,我想建议如下更改以及 Vladimir 的回答:
if (@available(iOS 14.0, *)) {
view.maskView = imageViewMask;
} else {
view.layer.mask = imageViewMask.layer;
}
我正在使用 JSQMessageViewController,但我面临的问题是(仅在 ios14 中)我无法在设备中看到图像、视频和音频等媒体项目,尽管这些视图正在生成调试视图层次结构。请参阅下面的附图:-
调试视图层次结构截图:
这是集合视图单元格中 UIImage 的描述:
附上屏幕截图:
您可以看到视图已生成 space 图片,但未显示!
有人遇到这个问题吗?我怎么解决这个问题。此问题发生在 iOS 14 中,它在 iOS 13 中完美运行。
您需要在 JSQMessagesMediaViewBubbleImageMasker.m
中覆盖
方法 - (void)jsq_maskView:(UIView *)view withImage:(UIImage *)image 并更改行:
view.layer.mask = imageViewMask.layer;
成为
view.maskView = imageViewMask;
我建议您为此使用类别。对我来说这就是解决方案。
为了向后兼容,我想建议如下更改以及 Vladimir 的回答:
if (@available(iOS 14.0, *)) {
view.maskView = imageViewMask;
} else {
view.layer.mask = imageViewMask.layer;
}