制作錐形按鈕并重寫UIbutton點(diǎn)擊區(qū)域

一個(gè)自定義圖表的需求,順便分享一下


6312E625-29F3-499F-8E71-DC332CBA91BC.png

設(shè)置點(diǎn)擊區(qū)域,path為按鈕的layer

class CusButton: UIButton {
    override func point(inside point: CGPoint, with event: UIEvent?) -> Bool {
        let res = super.point(inside: point, with: event)
        if res {
            //內(nèi)部點(diǎn)位相對(duì)的坐標(biāo)系為視圖本身
            
            //左側(cè)起始點(diǎn)
            let leftbeginpoint = CGPoint(x: 0, y: self.frame.size.height)
            //中間點(diǎn)
            let centerpoint = CGPoint(x: self.frame.size.width/2, y: 0)
            //控制點(diǎn)
            let controlpoint = CGPoint(x: self.frame.size.width/2,
                                           y: self.frame.size.height*6/7)
            //右側(cè)起始點(diǎn)
            let rightbeginpoint = CGPoint(x: self.frame.size.width,
                                          y: self.frame.size.height)
            
            let path = UIBezierPath()
            path.move(to: leftbeginpoint)
            path.addQuadCurve(to: centerpoint, controlPoint: controlpoint)
            path.addQuadCurve(to: rightbeginpoint, controlPoint: controlpoint)
            path.addLine(to: leftbeginpoint)
            path.close()
            
            if path.contains(point) {
                return true
            }
            
            return false
        }
        return false
    }
}

設(shè)置layer,可在自定義button里設(shè)置,但是目前不會(huì)做-。-

//制作三角柱
    func creatTriangleColumn(columnlable: CusButton){
        //內(nèi)部點(diǎn)位相對(duì)的坐標(biāo)系為視圖本身
        //左側(cè)起始點(diǎn)
        let leftbeginpoint = CGPoint(x: 0, y: columnlable.frame.size.height)
        //中間點(diǎn)
        let centerpoint = CGPoint(x: columnlable.frame.size.width/2, y: 0)
        //控制點(diǎn)
        let controlpoint = CGPoint(x: columnlable.frame.size.width/2,
                                       y: columnlable.frame.size.height*6/7)
        //右側(cè)起始點(diǎn)
        let rightbeginpoint = CGPoint(x: columnlable.frame.size.width,
                                      y: columnlable.frame.size.height)
        
        
        let path = UIBezierPath()
        path.move(to: leftbeginpoint)
        path.addQuadCurve(to: centerpoint, controlPoint: controlpoint)
        path.addQuadCurve(to: rightbeginpoint, controlPoint: controlpoint)
        path.addLine(to: leftbeginpoint)
        path.close()
        let shapelayer = CAShapeLayer()
        shapelayer.path = path.cgPath
        shapelayer.fillColor = danblue3.cgColor
        columnlable.layer.addSublayer(shapelayer)
        
    }
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • UIButton實(shí)現(xiàn)區(qū)域外點(diǎn)擊 今天項(xiàng)目開發(fā)中偶然需要這個(gè)功能,一個(gè)按鈕區(qū)域大小外也要能夠點(diǎn)擊響應(yīng) 因?yàn)轫?xiàng)目是很早...
    spicyShrimp閱讀 693評(píng)論 0 0
  • 漸變的面目拼圖要我怎么拼? 我是疲乏了還是投降了? 不是不允許自己墜落, 我沒有滴水不進(jìn)的保護(hù)膜。 就是害怕變得面...
    悶熱當(dāng)乘涼閱讀 4,471評(píng)論 0 13
  • 感覺自己有點(diǎn)神經(jīng)衰弱,總是覺得手機(jī)響了;屋外有人走過;每次媽媽不聲不響的進(jìn)房間突然跟我說話,我都會(huì)被嚇得半死!一整...
    章魚的擁抱閱讀 2,369評(píng)論 4 5
  • 夜鶯2517閱讀 128,103評(píng)論 1 9
  • 版本:ios 1.2.1 亮點(diǎn): 1.app角標(biāo)可以實(shí)時(shí)更新天氣溫度或選擇空氣質(zhì)量,建議處女座就不要選了,不然老想...
    我就是沉沉閱讀 7,377評(píng)論 1 6

友情鏈接更多精彩內(nèi)容