iOS 不规则按钮点击事件(一)

上篇中有提到不规则视图 这里就不再赘述


不规则UIView.png
  1. 已经画好的UIBezierPath对象marginalPath

2.这里直接在上篇的不规则View上添加了个Button


button.frame = self.bounds        button.setBackgroundImage(creatImageWithColor(color: UIColor.red), for: .highlighted)
button.isUserInteractionEnabled  = false

重写view的touchBegan和touchEnd方法
在touchBegan中获取到当前手指触摸的点
然后利用UIBezierPath 类中系统提供的contains方法 判断当前触摸点是否在path中,在就把按钮置为高亮 ,触摸结束后按钮取消高亮状态

    override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) {
        let touch:UITouch = ((touches as NSSet).anyObject()! )as!UITouch
        let point = touch.location(in: self)
        if marginalPath.contains(point)
        {
            print("包含")
            button.isHighlighted = true
        }
        else{
         print("no")
        }
        
    }
    
    override func touchesEnded(_ touches: Set<UITouch>, with event: UIEvent?) {
        button.isHighlighted = false
    }

//生成一张纯色的图片
   func creatImageWithColor(color:UIColor)->UIImage{
        let rect = CGRect(x:0,y:0,width:1,height:1)
        UIGraphicsBeginImageContext(rect.size)
        let context = UIGraphicsGetCurrentContext()
        context?.setFillColor(color.cgColor)
        context!.fill(rect)
        let image = UIGraphicsGetImageFromCurrentImageContext()
        UIGraphicsEndImageContext()
        return image!
    }

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 前言:看了几篇简书,九宫格密码解锁,看着不错,拿来学习一下。 一、实现效果 二、手势解锁实现过程 分析: 如图所示...
    麦穗0615阅读 7,477评论 14 62
  • Quartz2D以及drawRect的重绘机制字数1487 阅读21 评论1 喜欢1一、什么是Quartz2D Q...
    PurpleWind阅读 820评论 0 3
  • 文|图|007同学 全目录|【和蛋儿的对话】 上一篇|和蛋儿的对话(19) 蛋儿:“爸爸,赶快把手机整理一下,妈妈...
    007同学阅读 287评论 1 6
  • 经文|诗8:1-91 (大卫的诗,交与伶长。用迦特乐器。)耶和华我们的主阿,你的名在全地何其美。你将你的荣耀彰显于...
    服从阁下的仆人阅读 1,974评论 0 0
  • 电影好到我已不知用何文字作为开头。 我是如何认定一部电影是好电影的呢? 扣人心弦,能够让观众不由自主地代入影片,全...
    好点九阅读 1,784评论 0 2