[SWIFT] 스위프트 2 버튼 사용자 정의 모양의 프레임을 만들려면
SWIFT스위프트 2 버튼 사용자 정의 모양의 프레임을 만들려면
해결법
-
1.여기에만 특정 지역의 터치에 반응하는 버튼의 일례이다.
여기에만 특정 지역의 터치에 반응하는 버튼의 일례이다.
class MyButton: UIButton { var path: UIBezierPath! override func awakeFromNib() { backgroundColor = UIColor.greenColor() addTarget(self, action: #selector(touchDown), forControlEvents: .TouchDown) } override func drawRect(rect: CGRect) { path = UIBezierPath() path.moveToPoint(CGPointMake(150, 10)) path.addLineToPoint(CGPointMake(200, 10)) path.addLineToPoint(CGPointMake(150, 100)) path.addLineToPoint(CGPointMake(100, 100)) path.closePath() let shapeLayer = CAShapeLayer() shapeLayer.strokeColor = UIColor.redColor().CGColor shapeLayer.fillColor = UIColor.blueColor().CGColor shapeLayer.path = path.CGPath layer.addSublayer(shapeLayer) } func touchDown(button: MyButton, event: UIEvent) { if let touch = event.touchesForView(button)?.first { let location = touch.locationInView(button) if path.containsPoint(location) == false { button.cancelTrackingWithEvent(nil) } } } }
-
2.당신은 스위프트 3/4에서 그것을하고 싶은 경우 :
당신은 스위프트 3/4에서 그것을하고 싶은 경우 :
class MyButton: UIButton { var path: UIBezierPath! override func awakeFromNib() { backgroundColor = UIColor.green addTarget(self, action: #selector(touchDown), for: .touchDown) } override func draw(_ rect: CGRect) { path = UIBezierPath() path.move(to: CGPoint(x: 150, y: 10)) path.addLine(to: CGPoint(x: 200, y: 10)) path.addLine(to: CGPoint(x: 150, y: 100)) path.addLine(to: CGPoint(x: 100, y: 100)) path.close() let shapeLayer = CAShapeLayer() shapeLayer.strokeColor = UIColor.red.cgColor shapeLayer.fillColor = UIColor.blue.cgColor shapeLayer.path = path.cgPath layer.addSublayer(shapeLayer) } func touchDown(button: MyButton, event: UIEvent) { if let touch = event.touches(for: button)?.first { let location = touch.location(in: button) if path.contains(location) == false { button.cancelTracking(with: nil) } } } }
from https://stackoverflow.com/questions/36877085/how-to-make-the-frame-of-a-button-custom-shape-in-swift-2 by cc-by-sa and MIT license
'SWIFT' 카테고리의 다른 글
[SWIFT] 스위프트 동적 캐스트 실패 - 오류 단위 테스트를 실행하려고 할 때 (0) | 2020.11.07 |
---|---|
[SWIFT] 스위프트의 AVPlayerViewController에 유튜브에서 비디오를 재생 [중복] (0) | 2020.11.07 |
[SWIFT] 어떻게 적절하게 그룹 A는 목록 날짜별로 코어 데이터에서 가져? (0) | 2020.11.06 |
[SWIFT] 스위프트 & 중포 기지 | 사용자가 사용자 이름과 존재하는지 확인 (0) | 2020.11.06 |
[SWIFT] SKScene에서 앱 구매에 (0) | 2020.11.06 |