apache / incubator-weex

Apache Weex (Incubating)
https://weex.apache.org
Apache License 2.0
13.75k stars 1.82k forks source link

[iOS] sdk 0.28.0 版本的项目在iOS 14 beta系统中运行,图片无法显示 #3265

Open lz156 opened 4 years ago

lz156 commented 4 years ago

sdk 0.28.0 版本的项目在iOS 14 beta系统中运行,图片无法加载出来。

imatrixme commented 4 years ago

same problem, and if the app compiled by xcode 12 beta, all images will not show.

yecoco commented 3 years ago

一样,今天刚升级就出现这种问题

dudwchina commented 3 years ago

Xcode Version 12.0 (12A7209) 今天升级的release版本,图片也是出不来。

经过测试发现Xcode11和12在给imageview.image赋值时layer.contents表现不同。

WXImageComponent.m

Xcode11 layer.contents值不为空 image

Xcode12 layer.contents值为空 image

((UIImageView *)strongSelf.view).image = image; 修改为strongSelf.view.layer.contents = (__bridge id _Nullable)(image.CGImage);图片即可显示

详细原因探索中。。。

wxh6520 commented 3 years ago

sdk 0.28.0 版本的项目用Xcode Version 12.0编译,在iOS 14 正式版系统中运行,图片无法加载出来。

JianYeee commented 3 years ago

原因可能是在iOS14中,如果自定义了imageView的layer渲染,需要手动设置layer.contents,不会在设置了image后进行同步contents

image

在weex中,imageView组件除非设置了compositing,才进入layer层并重新渲染,否则仍旧以image为主

image

我的临时方案是设置image后主动同步layer.contents

image

if (image) { self.layer.contents = (id)image.CGImage; } else { self.layer.contents = nil; }

xztl commented 3 years ago

原因可能是在iOS14中,如果自定义了imageView的layer渲染,需要手动设置layer.contents,不会在设置了image后进行同步contents

image

在weex中,imageView组件除非设置了compositing,才进入layer层并重新渲染,否则仍旧以image为主

image

我的临时方案是设置image后主动同步layer.contents

image

if (image) { self.layer.contents = (id)image.CGImage; } else { self.layer.contents = nil; }

测试iOS12.4.8 会出现部分加载不显示

Su1001 commented 3 years ago

针对iOS14系统,即Xcode12运行后,图片不显示,我是这样解决的 但是不太知道会不会有其他影响。 ACFD29AA-7B03-4FA4-9012-F6D155278B6B

WXLayer.m文件

jianhan-he commented 3 years ago

https://github.com/apache/incubator-weex/pull/3276/

this pr has already resolve this issue.

y500 commented 3 years ago

mark

jianhan-he commented 3 years ago

最近我们release一个新版本,这个问题你们可以暂时先使用源码依赖去解决

foermo4-hao commented 3 years ago

原因可能是在iOS14中,如果自定义了imageView的layer渲染,需要手动设置layer.contents,不会在设置了image后进行同步contents

image

在weex中,imageView组件除非设置了compositing,才进入layer层并重新渲染,否则仍旧以image为主

image

我的临时方案是设置image后主动同步layer.contents

image

if (image) { self.layer.contents = (id)image.CGImage; } else { self.layer.contents = nil; }

Xcode 12.2 上可以了,谢谢