66 lines
2.2 KiB
Swift
66 lines
2.2 KiB
Swift
/*
|
||
* This file is part of the SDWebImage package.
|
||
* (c) DreamPiggy <lizhuoli1126@126.com>
|
||
*
|
||
* For the full copyright and license information, please view the LICENSE
|
||
* file that was distributed with this source code.
|
||
*/
|
||
|
||
import Foundation
|
||
import SDWebImage
|
||
|
||
#if !os(watchOS)
|
||
|
||
// View Wrapper
|
||
public class AnimatedImageViewWrapper : PlatformView {
|
||
var wrapped = SDAnimatedImageView()
|
||
var interpolationQuality = CGInterpolationQuality.default
|
||
var shouldAntialias = false
|
||
|
||
override public func draw(_ rect: CGRect) {
|
||
#if os(macOS)
|
||
guard let ctx = NSGraphicsContext.current?.cgContext else {
|
||
return
|
||
}
|
||
#else
|
||
guard let ctx = UIGraphicsGetCurrentContext() else {
|
||
return
|
||
}
|
||
#endif
|
||
ctx.interpolationQuality = interpolationQuality
|
||
ctx.setShouldAntialias(shouldAntialias)
|
||
}
|
||
|
||
public override init(frame frameRect: CGRect) {
|
||
super.init(frame: frameRect)
|
||
addSubview(wrapped)
|
||
wrapped.bindFrameToSuperviewBounds()
|
||
}
|
||
|
||
public required init?(coder: NSCoder) {
|
||
super.init(coder: coder)
|
||
addSubview(wrapped)
|
||
wrapped.bindFrameToSuperviewBounds()
|
||
}
|
||
}
|
||
|
||
extension PlatformView {
|
||
/// Adds constraints to this `UIView` instances `superview` object to make sure this always has the same size as the superview.
|
||
/// Please note that this has no effect if its `superview` is `nil` – add this `UIView` instance as a subview before calling this.
|
||
func bindFrameToSuperviewBounds() {
|
||
guard let superview = self.superview else {
|
||
print("Error! `superview` was nil – call `addSubview(view: UIView)` before calling `bindFrameToSuperviewBounds()` to fix this.")
|
||
return
|
||
}
|
||
|
||
self.translatesAutoresizingMaskIntoConstraints = false
|
||
self.topAnchor.constraint(equalTo: superview.topAnchor, constant: 0).isActive = true
|
||
self.bottomAnchor.constraint(equalTo: superview.bottomAnchor, constant: 0).isActive = true
|
||
self.leadingAnchor.constraint(equalTo: superview.leadingAnchor, constant: 0).isActive = true
|
||
self.trailingAnchor.constraint(equalTo: superview.trailingAnchor, constant: 0).isActive = true
|
||
|
||
}
|
||
}
|
||
|
||
#endif
|