钻石般的UIView

我正在尝试创build一个像钻石一样的angular落的UIView,如图所示:

钻石

我熟悉四舍五入:

myView.layer.cornerRadius = 10 

不过,我想要一个不同的形状。 我怎么能创造这个效果? 谢谢你的帮助!

解决这个问题的最好方法是使用CAShapeLayer。 这是一种可行的方法:将它粘贴到操场上,看看它是如何夹在angular落里的。

 import UIKit import XCPlayground extension UIView { func maskCorners(inset: CGFloat) { let path = UIBezierPath() path.moveToPoint(CGPoint(x: bounds.origin.x + inset,y: 0)) path.addLineToPoint(CGPoint(x: CGRectGetMaxX(bounds) - inset,y: 0)) path.addLineToPoint(CGPoint(x: CGRectGetMaxX(bounds), y: bounds.origin.y + inset)) path.addLineToPoint(CGPoint(x: CGRectGetMaxX(bounds), y: CGRectGetMaxY(bounds) - inset)) path.addLineToPoint(CGPoint(x: CGRectGetMaxX(bounds) - inset,y: CGRectGetMaxY(bounds))) path.addLineToPoint(CGPoint(x: bounds.origin.x + inset,y: CGRectGetMaxY(bounds))) path.addLineToPoint(CGPoint(x: 0,y: CGRectGetMaxY(bounds) - inset)) path.addLineToPoint(CGPoint(x: 0,y: bounds.origin.y + inset)) path.addLineToPoint(CGPoint(x: bounds.origin.x + inset,y: 0)) let mask = CAShapeLayer() mask.frame = bounds mask.path = path.CGPath layer.mask = mask } } let diamond = UIView(frame: CGRect(x:0, y: 0, width: 100, height:100)) diamond.backgroundColor = UIColor.redColor() XCPlaygroundPage.currentPage.liveView = diamond diamond.maskCorners(25)