基本上, 應該不算完全完成, 所以還沒打算真正的寫README, 不過實際上看起來應該是有點效果了

https://github.com/julianshen/SWPalette

這個lib主要是由Android support lib v7 那邊porting過來的, 它應該是屬於material design設計上的一個元素, 關於Android版本的Palette可以參考:

https://developer.android.com/reference/android/support/v7/graphics/Palette.html https://www.bignerdranch.com/blog/extracting-colors-to-a-palette-with-android-lollipop/ http://baoyz.com/android/2014/10/21/android-palette-use/

它的用途就是從Image裡面取得一些顏色, 讓你融入UI配色之中, 不過現在也好像沒看到幾個Android app目前有用這個設計, 它原理也不難, 就是做historgram quantization 而已, 我一開始照著原本的邏輯照po並不是用同樣的演算法重寫, 導致需要花很多時間debug, 到目前應該也還有很多bug, 不過主要的目的是練習Swift, 想說從一個很熟悉的語言的東西出發用新的東西來改寫可能更容易上手, 還蠻有趣的就是Swift一些語言上的特性, 讓一些地方簡化了不少 以下是目前的結果(有請Lena小姐示範一下):

Imgur

API基本上跟原本差不多, 分sync (swp_generatePalette)跟async (swp_generatePaletteAsync)兩種型態, 只是把method附掛到UIImage:

let p = image.swp_generatePalette(maxColors: 32)
        
if let s = p.lightMutedSwatch {
   self.textView?.textColor = s.bodyTextColor
   self.textView?.backgroundColor = s.color
}

目前產生的結果可能跟Android版本的結果會有落差, 可能還需要很用力的debug吧….