2016-11-09 6 views
6

Я хочу установить разные угловые радиусы для вида в Swift -3, я могу установить радиус для каждого угла с тем же значением, что и упомянутый в следующем сообщении , how to set cornerRadius for only top-left and top-right corner of a UIView?Разное cornerRadius для каждого угла Swift 3 - iOS

Есть ли способ установить радиус угла в следующем формате? Радиус верхнего левого: 18 Radius верхний правый: 18 Radius нижний правый: 3 Radius нижний левый: 18

+0

см этот ответ: http://stackoverflow.com/questions/10316902/rounded-corners-only-on-top-of-a-uiview/40222533#40222533 –

ответ

20

Вы можете установить по умолчанию 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) 
+0

работает точно так же, как expected.Thanks много , –