Ios 如何将图像视图转换为自定义形状(swift3)

Ios 如何将图像视图转换为自定义形状(swift3),ios,swift,swift3,imageview,cashapelayer,Ios,Swift,Swift3,Imageview,Cashapelayer,我正在尝试将单个imageview转换为右侧对象中的输出。这是一个非常类似的问题。然而,这是在迅捷2。我试过了,但在swift3中似乎不起作用 试着这样做: extension UIImageView { func addMask(_ bezierPath: UIBezierPath) { let pathMask = CAShapeLayer() pathMask.path = bezierPath.cgPath layer.mask =

我正在尝试将单个imageview转换为右侧对象中的输出。这是一个非常类似的问题。然而,这是在迅捷2。我试过了,但在swift3中似乎不起作用

试着这样做:

extension UIImageView {
    func addMask(_ bezierPath: UIBezierPath) {
        let pathMask = CAShapeLayer()
        pathMask.path = bezierPath.cgPath
        layer.mask = pathMask
    }
}

测试场地:

let myPicture = UIImage(data: try! Data(contentsOf: URL(string:"http://i.stack.imgur.com/Xs4RX.jpg")!))!
let iv = UIImageView(image: myPicture)

let bezierPath = UIBezierPath()
bezierPath.move(to: iv.center)
bezierPath.addLine(to: CGPoint(x: iv.frame.maxX, y: 0))
bezierPath.addLine(to: CGPoint(x: iv.frame.maxX, y: iv.frame.maxY))
bezierPath.addLine(to: CGPoint(x: 0, y: iv.frame.maxY))
bezierPath.addLine(to: .zero)
bezierPath.close()

iv.addMask(bezierPath)

请给我们看你试过的代码。Swift 2和Swift 3在这方面没有任何区别(除了一些语法)。没有。我是否将测试游乐场放在扩展名文件中?在项目中的测试代码之前,您需要在游乐场文件中添加扩展名。您可以添加一个新的swift文件,将导入UIKit添加到该文件并在那里添加扩展名,我非常感谢您的帮助。我很好奇我怎样才能改变形状。现在图像被裁剪。我只想改变图像的形状。所以所有的图像都被转换成另一个形状。谢谢你。这对我帮助很大。我有一个疑问,你能澄清一下吗