Различные cornerRadius для каждого угла Swift 3-iOS

Я хочу установить другой радиус угла для представления в Swift -3, Я могу установить радиус для каждого угла на то же значение, как тот, который упоминается в следующем сообщении,Как установить cornerRadius только для верхнего левого и верхнего правого угла UIView?

есть ли способ установить радиус угла в следующем формате ? Верхнего левого радиус: 18 Верхнего правого радиус: 18 Радиус снизу справа: 3 Радиус внизу слева: 18

1 ответов


вы можете установить значение по умолчанию layer.cornerRadius до наименьшего значения, а затем установите границу маски слоя на большее значение.

let demoView = UIView(frame: CGRect(x: 100, y: 200, width: 100, height: 100))
demoView.backgroundColor = UIColor.red
demoView.layer.cornerRadius = 3.0

let maskPath = UIBezierPath(roundedRect: demoView.bounds,
                            byRoundingCorners: [.topLeft, .topRight, .bottomLeft],
                            cornerRadii: CGSize(width: 18.0, height: 0.0))

let maskLayer = CAShapeLayer()
maskLayer.path = maskPath.cgPath
demoView.layer.mask = maskLayer
view.addSubview(demoView)