UIImageを丸くする。KingFisherを使って画像を丸くする
Kingfisherとは?
URLから画像を取得する方法として、KingfisherというLibraryがあります。
画像を丸くする
func roundImage() -> UIImage { let minLength: CGFloat = min(self.size.width, self.size.height) let rectangleSize: CGSize = CGSize(width: minLength, height: minLength) UIGraphicsBeginImageContextWithOptions(rectangleSize, false, 0.0) UIBezierPath(roundedRect: CGRect(origin: .zero, size: rectangleSize), cornerRadius: minLength).addClip() self.draw(in: CGRect(origin: CGPoint(x: (minLength - self.size.width) / 2, y: (minLength - self.size.height) / 2), size: self.size)) let newImage = UIGraphicsGetImageFromCurrentImageContext()! UIGraphicsEndImageContext() return newImage }
kingfisherを使って画像を丸くする
func setCornerRadiusImage(url: URL?, placeholder: UIImage? = nil) { let processor = ResizingImageProcessor(referenceSize: self.frame.size) >> RoundCornerImageProcessor(cornerRadius: self.frame.size.width / 2) kf.setImage(with: url, placeholder: placeholder, options: [.processor(processor), .cacheSerializer(FormatIndicatedCacheSerializer.png)]) }
jpgで、画像を保存するとキャッシュした後に白い背景が表示されるみたいです。 なので、pngに変えています。