iOS 14の下の画像はロードできません.weex、YYAnimateView、SDAnimatedImageViewなどです.
1624 ワード
xcode 12をアップグレードした後、コンパイルしてAppを実行すると、weexの画像とYYAnimateViewの画像を含む大きな画像がロードされないことがわかりました.
検討した結果、iOS 14におけるUIKEtの
次のように変更すると、正常にロードできます.
参照先: https://github.com/apache/inc... https://github.com/ibireme/YY... https://github.com/SDWebImage...
元アドレス:https://y500.me/2020/09/29/im...
検討した結果、iOS 14におけるUIKEtの
displayLayer:
に対する処理機構が変化していることが分かった.displayLayer:
は、CALayerDelegate
の代理方法である.iOS 14の前に、UImitはこのメソッドを呼び出す前にUIImageView.image
をレンダリングします.iOS 14では、UImitはエージェントメソッドを先に呼び出し、displayLayer:
というメソッドを実装すれば、UImitはレンダリングされません.次のように変更すると、正常にロードできます.
- (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;
// }
}
参照先:
元アドレス:https://y500.me/2020/09/29/im...