Skip to content

Instantly share code, notes, and snippets.

@ha1f
Created November 21, 2019 16:09
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save ha1f/d78f9851cfd5910a5745cb8652c97bdd to your computer and use it in GitHub Desktop.
Save ha1f/d78f9851cfd5910a5745cb8652c97bdd to your computer and use it in GitHub Desktop.
final class CircleImageRenderer {
let image: Observable<UIImage>
init(radius: CGFloat, fillColor: UIColor = .white) {
self.image = Observable.create { observer in
let format = UIGraphicsImageRendererFormat.default()
format.scale = UIScreen.main.scale
let width = radius * 2
let size = CGSize.square(width)
let renderer = UIGraphicsImageRenderer(
size: size,
format: format
)
let image = renderer.image(actions: { context in
let rect = CGRect(origin: .zero, size: size)
fillColor.setFill()
context.cgContext.fillEllipse(in: rect)
})
observer.onNext(image)
observer.onCompleted()
return Disposables.create()
}
.subscribeOn(ConcurrentDispatchQueueScheduler(qos: .utility))
.share(replay: 1, scope: .forever)
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment