今天做了一個點擊/拖動小星星評分功能的控件,效果如下:
2019-07-19 19.07.31.gif
支持點擊和滑動
原理簡介:
一.使用了UIControl控件,點擊和滑動事件的監聽不用自己搞,自帶buff.頁面設置五顆星星,就給UIControl添加5個Button.每個button的tag從0開始...
Snip20190719_17.png
二.在以上點擊或者拖動相應的回調事件中書寫我們的業務邏輯.
比如我們點擊到3.4顆星星的進度,我們的代碼執行了以下三件事:
1.得到當前進度的點坐標,遍歷五個button,找到當前點所在的button,就是tag=2的button.獲取當前點的數值count. count = button.tag+(當前點的x坐標-button.x)/button.width. 從而得到count = 2.4
2.遍歷所有button,設置其圖片為灰色星星的圖片
3.遍歷<=count的button 設置其圖標為黃色星星的圖片
4.對當前button的圖片單獨處理,count取小數0.4,利用圖片截取方法截取黃色星星寬度*0.4的圖片,然后將其在灰色星星圖片上進行合成,這樣就能得到一張坐標40%的是黃色星星,右邊60%是灰色星星的圖片.然后返回給當前button,至此大工告成.
希望初學者能得到啟示,學會自己封裝控件。完整demo的github地址:星級評分demo請點擊此鏈接進行下載。