swift3 - 将图像裁剪为圆形 swift 3

标签 swift3 uiimageview drawing crop

所以我遇到了这个问题,我过去几天一直在努力解决,但是,找不到问题的解决方案。我的问题很简单,我正在尝试裁剪图像,使其变成圆形。通过研究,我发现了一些可用于实现这一点的方法,似乎经常出现的主要方法是简单地裁剪 UIImageView 使其成为圆形框架。我用来执行此操作的代码如下所示。

imageView.layer.masksToBounds = false
imageView.layer.cornerRadius = imageView.frame.height/2
imageView.clipsToBounds = true

唯一的问题是这种方法只裁剪 ImageView 的框架而不是图像本身。因此,如果我将图像保存到用户的相机胶卷中,它仍然会显示为矩形而不是裁剪的圆形。我对如何实际实现这一点感到有点迷茫,因为我对 Xcode 比较陌生,并希望有人能够提供一种方法来裁剪图像本身而不仅仅是框架。任何有关该主题的帮助将不胜感激。谢谢你。

最佳答案

试试这个代码 迅速 3 ,首先您需要将 imageView 内容模式保持为 Aspect Fit。

import UIKit

class ViewController: UIViewController {

@IBOutlet weak var imgView: UIImageView!

override func viewDidLoad() {
    super.viewDidLoad()
    let profilePicture = UIImage(named: "yourImageName")
    self.imgView.image = profilePicture.circleMasked
   }

override func didReceiveMemoryWarning() {
    super.didReceiveMemoryWarning()
    // Dispose of any resources that can be recreated.
}



}

  extension UIImage {
  var isPortrait:  Bool    { return size.height > size.width }
  var isLandscape: Bool    { return size.width > size.height }
  var breadth:     CGFloat { return min(size.width, size.height) }
  var breadthSize: CGSize  { return CGSize(width: breadth, height: breadth) }
  var breadthRect: CGRect  { return CGRect(origin: .zero, size: breadthSize) }
  var circleMasked: UIImage? {
      UIGraphicsBeginImageContextWithOptions(breadthSize, false, scale)
      defer { UIGraphicsEndImageContext() }
      guard let cgImage = cgImage?.cropping(to: CGRect(origin: CGPoint(x: isLandscape ? floor((size.width - size.height) / 2) : 0, y: isPortrait  ? floor((size.height - size.width) / 2) : 0), size: breadthSize)) else { return nil }
      UIBezierPath(ovalIn: breadthRect).addClip()
      UIImage(cgImage: cgImage, scale: 1, orientation: imageOrientation).draw(in: breadthRect)
      return UIGraphicsGetImageFromCurrentImageContext()
  }
}

关于swift3 - 将图像裁剪为圆形 swift 3,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46299926/

相关文章:

ios - 从转换后的 UIImageView 裁剪 UIImage

ios - 如何隐藏导航栏下的searchBar并在用户向下拉tableView时显示它?

ios - 没有收到从 FCM 到 iOS Swift 3 的推送通知

ios - 使用委托(delegate)从 UIView 子类向 UIViewController 发送数据

objective-c - 优化view绘制代码

iphone - 在 UIImage 上绘制另一个图像

c++ - 矩形边界内的旋转线

ios - 快速将字符串转换为拼音字母表

iphone - 暂停 UIImageview 动画

ios - 如何在 TableViewController 中的 tableview 上方添加图像 - Swift 3