Swift 带圆角的UIImageView可点击区域UIKit
我有一个有趣的问题-有一个圆角的正方形UIImageView(这使它成为一个圆),我这样做,每当你触摸视图时,就会发生一些事情,但问题是圆外和视图框架内的区域仍然可以点击,我不知道如何修复它 为了清楚起见,我希望我的视图只能在圆圈内点击。有没有办法做到这一点 以下是我的代码片段:Swift 带圆角的UIImageView可点击区域UIKit,swift,uikit,uiimage,uigesturerecognizer,Swift,Uikit,Uiimage,Uigesturerecognizer,我有一个有趣的问题-有一个圆角的正方形UIImageView(这使它成为一个圆),我这样做,每当你触摸视图时,就会发生一些事情,但问题是圆外和视图框架内的区域仍然可以点击,我不知道如何修复它 为了清楚起见,我希望我的视图只能在圆圈内点击。有没有办法做到这一点 以下是我的代码片段: @IBOutlet弱var profilePictureView:UIImageView//它是240x240 重写func viewDidLoad(){ super.viewDidLoad() profilePict
@IBOutlet弱var profilePictureView:UIImageView//它是240x240
重写func viewDidLoad(){
super.viewDidLoad()
profilePictureView?layer.cornerRadius=240/2
让tap=uitappesturerecognizer(目标:自我,操作:#选择器(handleProfilePictureTap(:))
profilePictureView?.AddGestureRecognitor(点击)
profilePictureView?.isUserInteractionEnabled=true
}
将视图控制器指定为识别器的代理,并过滤识别器接收到的触摸:
func viewDidLoad() {
...
tap.delegate = self
}
func gestureRecognizer(_ gr: UIGestureRecognizer, shouldReceive touch: UITouch) -> Bool {
let bezierPath = UIBezierPath(roundedRect: profilePictureView.bounds, cornerRadius: profilePictureView.layer.cornerRadius)
let point = touch.location(in: profilePictureView)
return bezierPath.contains(point)
}
当然您只需覆盖
hitTest
。