iOS 14下面圖片無法加載,包括weex、YYAnimateView、SDAnimatedImageView


升級xcode12后,編譯運行App發現大片大片的圖片加載不出來,包括weex的圖片和YYAnimateView的圖片都有問題。

經過一番研究之后,發現是iOS 14下UIKit對 displayLayer:的處理機制有所變化。
displayLayer:CALayerDelegate的代理方法。在iOS 14之前,UIKit在調用這個方法之前就會去渲染UIImageView.image
而在iOS 14,UIKit則是先去調用代理方法,如果你實現了displayLayer:這個方法,那么UIKit就不會再去渲染了。

如果改成下面這樣就可以正常加載了:

- (void)displayLayer:(CALayer *)layer {
    UIImage *currentFrame = _curFrame;
    if (currentFrame) {
        layer.contentsScale = currentFrame.scale;
        layer.contents = (__bridge id)currentFrame.CGImage;
    } else {
        // If we have no animation frames, call super implementation. iOS 14+ UIImageView use this delegate method for rendering.
        if ([UIImageView instancesRespondToSelector:@selector(displayLayer:)]) {
           [super displayLayer:layer];
        }
    }
//    if (_curFrame) {
//        layer.contents = (__bridge id)_curFrame.CGImage;
//    }
}

參考:

  1. https://github.com/apache/incubator-weex/issues/3265
  2. https://github.com/ibireme/YYWebImage/issues/242
  3. https://github.com/SDWebImage/SDWebImage/issues/3040

原地址:https://y500.me/2020/09/29/image-not-render-on-ios14/


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM