Я пытаюсь создать UIView с углами в форме ромба, как показано на рисунке:
Я знаком с закруглением углов:
myView.layer.cornerRadius = 10
Однако я хочу другую форму. Как я мог создать этот эффект? Спасибо за вашу помощь!
Я пытаюсь создать UIView с углами в форме ромба, как показано на рисунке:
Я знаком с закруглением углов:
myView.layer.cornerRadius = 10
Однако я хочу другую форму. Как я мог создать этот эффект? Спасибо за вашу помощь!
Лучший способ решить такую проблему — использовать 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)
drawRect:
. - person rmaddy   schedule 23.04.2016UIBezierPath
- person Alexander Doloz   schedule 23.04.2016drawRect:
. - person rmaddy   schedule 23.04.2016