Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/github/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Swift 带圆角的UIImageView可点击区域UIKit_Swift_Uikit_Uiimage_Uigesturerecognizer - Fatal编程技术网

Swift 带圆角的UIImageView可点击区域UIKit

Swift 带圆角的UIImageView可点击区域UIKit,swift,uikit,uiimage,uigesturerecognizer,Swift,Uikit,Uiimage,Uigesturerecognizer,我有一个有趣的问题-有一个圆角的正方形UIImageView(这使它成为一个圆),我这样做,每当你触摸视图时,就会发生一些事情,但问题是圆外和视图框架内的区域仍然可以点击,我不知道如何修复它 为了清楚起见,我希望我的视图只能在圆圈内点击。有没有办法做到这一点 以下是我的代码片段: @IBOutlet弱var profilePictureView:UIImageView//它是240x240 重写func viewDidLoad(){ super.viewDidLoad() profilePict

我有一个有趣的问题-有一个圆角的正方形UIImageView(这使它成为一个圆),我这样做,每当你触摸视图时,就会发生一些事情,但问题是圆外和视图框架内的区域仍然可以点击,我不知道如何修复它

为了清楚起见,我希望我的视图只能在圆圈内点击。有没有办法做到这一点

以下是我的代码片段:

@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