[iOS/Swift] Holo Color Picker(空心調色盤)


調色盤在APP開發中雖不是很常被使用,但也不算少見。舉凡文字、背景顏色等個人化的時候可以用到。對一個開發者來說,上網找找open source來用,是在自然不過的事情。但在網路上尋尋覓覓了半天,我以為一定找得到的空心調色盤原始碼,在Android找到非常多open source,但在iOS上居然找不到,只找到實心的調色盤。撇除功能,就以設計感來說,私心覺得空心的調色盤比較好看呀!但礙於本身開發能力,沒辦法寫出一個好的open source,所以就拿了GitHub上johankasperi的SwiftHSVColorPicker來改,把原本實心改成空心調色盤。其中原本的調色盤可以調整色相(Hue)、明度(Brightness)、飽和度(Saturation),但因為我不需要,所以把色相與明度都拿掉了,有需要的可以自行參考原source code修改。被我修改後的原始碼在這

整個調色盤由ColorUtils, ColorWheel, SelectedColorView, SwiftHSVColorPicker,這四個Class所組成。

ColorUtils

定義一些RGB轉HSV的function。

ColorWheel

定義外面的那個彩色輪怎麼生成、判定觸碰點在不在彩色輪範圍內及其觸碰事件的反饋。

SelectedColorView

定義當收到彩色輪選取顏色時,跟著改變自己的顏色。

SwiftHSVColorPicker

負責將ColorWheel和 SelectedColorView,組合成一組完整的調色盤,並充當兩者協調的角色,接收ColorWheel選取顏色的值,改變SelectedColorView的顏色。


本來一開始是想詳細說明完整的修改邏輯,但發現需要先說明原本的架構,再說明改動的部分會比較完整。礙於篇幅的關係,這麼做會太冗長而且邏輯也不易交代清楚。所以有興趣的可以自行研究一下,我覺得原作者的註解蠻清楚的,花點時間就可以了解整個邏輯。或者可以直接使用我更改後的程式碼,可以到SwiftHSVColorPicker裡面的hueAndSaturationSelected函數,找到ColorWheel傳來的顏色值,然後再用NotificationCenter或其他方式將值傳遞出去。

留言

這個網誌中的熱門文章

[Mac OS X] Automator-惱人的重複工作小幫手:初級班

[Mac OS X] AppleScript-行事曆當日事件同步到便條紙:進階班