В настоящее время я пытаюсь создать кнопку, имеющую форму шестиугольника, но кнопка по-прежнему реагирует на нажатия, которые находятся за пределами ее формы.
Я успешно создал форму, переопределив func draw(_ rect: CGRect)
(см. Ниже ) но, к сожалению, я не могу понять, как ограничить область соприкосновения формой.
Я также попытался установить clipsToBound
на true
, но это тоже не помогло.
override func draw(_ rect: CGRect) {
let radiusOuterCircle: CGFloat = self.frame.width / 2
let centerXY = self.frame.width / 2
let initialPoint = CGPoint(x: 0, y: centerXY)
let shapePath = UIBezierPath()
shapePath.move(to: initialPoint)
let secondPoint = CGPoint(x: radiusOuterCircle / 2, y: abs(tan(CGFloat.pi / 3) * (radiusOuterCircle / 2)) + centerXY)
let thirdPoint = CGPoint(x: radiusOuterCircle / 2 * 3, y: secondPoint.y)
let fourthPoint = CGPoint(x: radiusOuterCircle * 2, y: centerXY)
let fifthPoint = CGPoint(x: thirdPoint.x, y: centerXY - abs(tan(CGFloat.pi / 3) * (radiusOuterCircle / 2)))
let sixthPoint = CGPoint(x: centerXY / 2, y: fifthPoint.y)
shapePath.addLine(to: secondPoint)
shapePath.addLine(to: thirdPoint)
shapePath.addLine(to: fourthPoint)
shapePath.addLine(to: fifthPoint)
shapePath.addLine(to: sixthPoint)
shapePath.close()
UIColor(red: 247/255, green: 204/255, blue: 47/255, alpha: 1.0).set()
shapePath.fill()
}
Большое спасибо:)