Лучший способ решить такую проблему, используя CAShapeLayer. Вот что должно получиться: вставьте его в игровую площадку и посмотрите, как она зажимается по углам.
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)
Override 'drawRect:'. – rmaddy
Извините, я никогда раньше не использовал этот метод. Не могли бы вы предоставить мне пример кода? Спасибо – penatheboss
Прочтите [Просмотреть руководство по программированию для iOS] (https://developer.apple.com/library/ios/documentation/WindowsViews/Conceptual/ViewPG_iPhoneOS/Introduction/Introduction.html#//apple_ref/doc/uid/TP40009503) – rmaddy