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!
    }

最后编辑于 :
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • Quartz2D以及drawRect的重绘机制字数1487 阅读21 评论1 喜欢1一、什么是Quartz2D Q...
    PurpleWind阅读 958评论 0赞 3
  • 文|图|007同学 全目录|【和蛋儿的对话】 上一篇|和蛋儿的对话(19) 蛋儿:“爸爸,赶快把手机整理一下,妈妈...
    007同学阅读 356评论 1赞 6
  • 电影好到我已不知用何文字作为开头。 我是如何认定一部电影是好电影的呢? 扣人心弦,能够让观众不由自主地代入影片,全...
    好点九阅读 1,865评论 0赞 2
  • 国学热是近些年来才兴起的,我知道国学这个概念,还是从百家讲坛这个节目热播开始。但是,这股浪潮发展到现在,已经出现了...
    巴图鲁阅读 685评论 3赞 4

友情链接更多精彩内容