Fix the iOS 17 UIKit behavior issue that UIImageView entering the background will reset CALayer's contents, which cause animated image render issue
Should use traitCollectionDidChange to refresh the CALayer's contents status to match current frame index
This commit is contained in:
parent
fd1950de05
commit
a95075b54d
|
@ -501,6 +501,17 @@
|
|||
}
|
||||
}
|
||||
|
||||
#if SD_UIKIT
|
||||
- (void)traitCollectionDidChange:(UITraitCollection *)previousTraitCollection {
|
||||
// See: #3635
|
||||
// From iOS 17, when UIImageView entering the background, it will receive the trait collection changes, and modify the CALayer.contents by `self.image.CGImage`
|
||||
// However, For animated image, `self.image.CGImge != self.currentFrame.CGImage`, right ?
|
||||
// So this cause the render issue, we need to reset the CALayer.contents again
|
||||
[super traitCollectionDidChange:previousTraitCollection];
|
||||
[self.imageViewLayer setNeedsDisplay];
|
||||
}
|
||||
#endif
|
||||
|
||||
#if SD_MAC
|
||||
// NSImageView use a subview. We need this subview's layer for actual rendering.
|
||||
// Why using this design may because of properties like `imageAlignment` and `imageScaling`, which it's not available for UIImageView.contentMode (it's impossible to align left and keep aspect ratio at the same time)
|
||||
|
|
Loading…
Reference in New Issue