發表文章

目前顯示的是 2017的文章

[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] AppleScript-行事曆當日事件同步到便條紙:進階班

圖片
此篇為 [Mac OS X] Automator-惱人的重複工作小幫手:初級班 的進階。Automator本身雖然內建許多實用且常用的指令,提供我們用拖拉、組合的方式,將不同的指令組合起來,完成自動化工作流程。但也不是所有的工作都有現成的指令,例如本篇的應用案例,將「行事曆」當日事件標題抓出來,同步到「便條紙」當中,作為當日行程的摘要,顯示在桌面上。所以這個時候就需要撰寫AppleScript來達成我們自動化工作流程的目的。本篇將著重在應用案例,介紹如何使用AppleScript來自動化我們的工作流程,並以單日及多天數事件進行測試,最後成果如下圖。 AppleScript AppleScript為蘋果公司所開發的腳本語言,可以用來控制Mac OS X上運行的應用程式。其”自然語言”的特性,讓開發者以類似人與人之間溝通的語言來撰寫程式碼,讓即使沒有程式碼撰寫經驗的人,能夠以日常語言經驗進行開發。「AppleScript Editor」為AppleScript整合開發環境(IDE),但目前「AppleScript Editor」也支援使用JavaScript進行開發。對我來說,現在的AppleScript概念已經不單單是一個語言了,而是泛指能夠開發控制Mac OS X應用程式的語言,也就是AppleScript, JavaScript。 支援AppleScript的應用程式 支援AppleScript的內建應用程式如Finder,Safari,photo及部分第三方應用程式如Office, PDF, Photoshop等,稱為Scriptable Applications。意思就是在上述應用程式開發的過程中,針對AppleScript開出相對應的API,讓使用者透過此API直接操控應用程式。為了要支援AppleScript,應用程式在開發的過程中,要額外花心力針對AppleScript做開發,所以不是所有應用程式開發者都願意這麼做。但也不代表沒辦法操控那些Non- Scriptable Applications,我們可以透過GUI Scripting,模擬使用者操作介面的方式,例如點擊程式內UI元件或者鍵盤按下某個鍵等,間接操控這些應用程式。 AppleScript語言語法及應用程式API 網路上有很多AppleScript入門的教學,如 Appl...

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

圖片
身為一個擁有蘋果基本套裝(Macbook,iPad,iPhone)的果粉來說,蘋果電腦作業系統(Mac OS X)介面漂亮簡潔、操作簡單,這點絕對是毋庸置疑的。不過雖然說操作簡單,但其實內建了許多強大功能的軟體,今天介紹的主角Automator就是其中之一。這時候就會有人問說:所以Automator到底是什麼?它可以幫助我什麼?它可以吃嗎?其實Automator是一款可以藉由滑鼠點擊、拖拉等操作,將一系列指定工作組合在一起自動執行的軟體。如果以線上遊戲來比喻的話,Automator就是遊戲中的自動練功外掛,自動幫我們執行一系列重複無聊的走路、打怪、賣裝 (在現實世界用這個不會被GM抓,倒是會幫你賺到金錢,恩…我說的是時間)。 Automator程式庫內建有許多的指令,將常用到的功能包裝成一個可以拖拉的程式積木,這些指令橫跨不同種類的內建軟體(Finder,Safari,photo,行事曆…),以及第三方軟體(office,pdf,photoshop)。假設今天有一千張照片需要加上浮水印,一張張慢慢處理的話,根本處理不完。當然沒有人會這麼做,至少會上網找個相關的軟體。不過Automator的優勢之一就是它是內建的,且可一套軟體執行不同種類的工作。不必像是上網下載軟體一樣,害怕電腦中毒,在蘋果如日中天的今天,沒有不可能只有想不想,連Mac都會中勒索病毒了呢。此外一般這種軟體功能比較單一,如果想要自動化額外的瑣碎工作,例如從不同資料夾搬移照片、將已上浮水印的照片集中或分別放到不同資料夾的話,網路上載的通常就沒法做到了。 不過Automator也不是萬能,不是所有工作都有現成的指令,除非透過AppleScript,以撰寫程式碼的方式完成。此外這種拖拉指令的方式其實跟寫程式相似,只是用較簡單的方式來實踐邏輯,所以難免會有邏輯錯誤,也就是俗稱的臭蟲(bug)。當執行的結果與預期不符時,就要進入debug地獄,不斷的測試、修改。 所以總歸到底,在開發自動化流程之前,需要對問題先進行評估。看看建立自動化工作流程花的時間,是不是比原本重複性工作所花的時間來得多,值不值得花時間去開發?不過,如果是沒有程式撰寫經驗,但有興趣想練習自己寫程式的話,Automator也是個不錯的練習工具之一(Scratch可能更適合);而對於有程式撰寫經驗的人來說,則可採用AppleScr...