本節書摘來自異步社區《iOS 6核心開發手冊(第4版)》一書中的第2章,第2.11節秘訣:構建星星滑塊,作者 【美】Erica Sadun,更多章節內容可以訪問云棲社區“異步社區”公眾號查看
2.11 秘訣:構建星星滑塊
iOS 6核心開發手冊(第4版)
評級滑塊允許用戶在一組圖像上拖動他們的手指,對像電影、軟件等這樣的項目進行評級。這是基于觸摸的界面的一項常見的任務,但是簡單的UISlider實例不能利用其浮點值很好地完成它。作為替代,像秘訣2-6中構建的選擇器可以把用戶的選擇限制于一組具體的元素,產生一個有界的整數值,它位于0和顯示的最大項目數之間。當用戶的手指觸摸每個星星時,控件的值將會更新,并且會引發相應的事件,允許應用程序像任何其他的UIControl子類一樣處理星星滑塊。
藝術作品是隨意而為的。圖2-6中顯示的示例使用的是星星,但是沒有理由把自己限制于星星。可以使用自己喜歡的任何藝術作品,只要提供“啟用”和“禁用”圖像即可。可以考慮心形圖案、鉆石、笑臉等。還可以輕松地更新這個秘訣,在展示前提供星星的起始計數。

圖2-6 秘訣2-6創建一個自定義的星星滑塊控件,根據選擇繪制每顆星星的動畫。
簡單的動畫塊可以導致星星縮小和放大,并且控件的值更新時恢復原狀
除了簡單的滑動之外,秘訣2-6還添加了動畫元素。在獲得一個新值時,最右邊的星星將添加一個簡單的動畫塊,以進行縮放和恢復原狀,除了顯目的視覺效果之外,這還可以給用戶提供生動的反饋。由于在實際應用中(而不是在圖2-6中所示的基于模擬器的截屏圖中),用戶的手指放在星星的上方,動畫使用夸張的變形提供超過預期的手指尺寸之外的反饋。在這里,藝術作品相當小,并將放大到原始尺寸的150%,但是可以輕松地修改應用程序,以匹配自己的需求。
除了最低限度的布局和反饋元素之外,秘訣2-6還沿用了秘訣2-5使用的相同類型的自定義UIControl子類方法,跟蹤觸摸的生命周期,并在合適的時間引發事件。在這個秘訣中添加星星元素和反饋所需的最低限度的代碼演示了UIControl子類化實際上有多簡單。

