運行時改變App的圖標
ImageMagick豌拙,Terminal驯嘱,Xcode址芯,去寫一個自動在你的app的圖標上加上"debug"或者"beta"標識的腳本。
- 安裝ImageMagick
-
這是一個非常強大的圖形處理圖軟件套件牧抽,專門通過終端進行。你可以非常簡單地通過Homebrew來安裝ImageMagick
brew update
這是確定你是否從Homebrew上安裝的最新的安裝包遥赚,這個也是確認你是否有安裝Homebrewbrew install ImageMagick
使用Homebrew來安裝你所需要的安裝包
- 安裝Ghostscript
-
因為你將使用的ImageMagick會依賴它扬舒。Ghostscript是一個軟件套件用于呈現(xiàn)PDF和PS文件。你需要它是因為它提供了支持ImageMagick的字體凫佛。
brew install ghostscript
brew doctor
如果中間發(fā)生錯誤讲坎,運行這個命令,如果安裝失敗,你會得到一個消息愧薛,并告訴你如何去修復它晨炕。
ImageMagick基本使用
convert
:一張圖片,修改它毫炉,然后保存為一張新的圖片府瞄;composite
:一張圖片,在它上面覆蓋另外一張圖片,然后存為新的第三張圖片
convert AppIcon60x60@2x.png -fill white -font Times-Bold -pointsize 18 -gravity south -annotate 0 "Hello World" test.png
AppIcon60x60@2x.png 是輸入圖片的名字;
fill white 設置文本為白色;
font Times-Bold 告訴ImageMagick使用什么字體;
pointsize 18 設置字體的大小為18;
gravity south 文本與圖片的底部對齊
annotate 0 "Hello World" 告訴ImageMagick使帶有"Hello World"文本注釋的圖片旋轉(zhuǎn)的度數(shù)為0度遵馆;
test.png 輸出的文件名鲸郊,并且ImageMagick將會覆蓋掉已經(jīng)存在的文件。
convert -list font
看下你所能用的字體有哪些
composite betaRibbon.png test.png test2.png
這個是將betaRibbon.png放在test.png的上面货邓,然后將合成的圖片保存為test2.png
convert betaRibbon.png -resize 120x120 smallBetaRibbon.png
將betaRibbon.png的尺寸改為120x120的
Xcode
- 你也要將debugRibbon.png 和 betaRibbon.png 放在和.xcodeproj同級的目錄文件中
- 應用程序圖標的名稱必須像
AppIcon60x60@2x.png
秆撮。Xcode使用此命名約定來確定使用哪個圖標根據(jù)設備使用 - 在你的工程中,選擇項目的Target换况,然后選擇Build Phases职辨,點擊+,在彈出的菜單中選擇New Run Script Phase
echo "hello word"
最簡單的打印
echo "${BUILT_PRODUCTS_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}"
你運行你的項目后的文件夾路徑戈二,包含最后一個圖標
echo "${SRCROOT}"
項目文件所在的文件夾路徑
IFS=$'\n'
//
echo $(find ${SRCROOT} -name "AppIcon60x60@2x.png")
- 上面獲取到圖標的地址
-
IFS=$'\n'
設置IFS-internal字段分隔符換行符舒裤。如果你不這樣做,第二行就會失敗,因為文件名,Llama Trot,包含一個空格 -
$ { SRCROOT }
文件夾遞歸搜索文件AppIcon60x60@2x.png
IFS=$'\n'
#1
PATH=${PATH}:/usr/local/bin
#2
TARGET_PATH="${BUILT_PRODUCTS_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/AppIcon60x60@2x.png"
BASE_IMAGE_PATH=$(find ${SRCROOT} -name "AppIcon60x60@2x.png")
#3
convert betaRibbon.png -resize 120x120 resizedBetaRibbon.png
#4convert ${BASE_IMAGE_PATH} -fill white -font Times-Bold -pointsize 18 -gravity south -annotate 0 "Hello World" ${TARGET_PATH} (修改文字)
convert ${BASE_IMAGE_PATH} -fill white -font Times-Bold -pointsize 18 -gravity south -annotate 0 "Hello World" - | composite resizedBetaRibbon.png - ${TARGET_PATH}
如果你省略第一行,編譯將失敗觉吭。你的終端有一個叫PATH的變量腾供,來存儲一些默認的本地腳本。對于所有的命令終端認為這是第一個鲜滩,默認并不是Unix的一部分伴鳖。這允許任何命令位于一個目錄路徑運行沒有指定完整的命令的位置。Xcode需要將相同的PATH變量分享給你的終端徙硅。這行添加/user/local/bin到PATH變量榜聂,Homebrew安裝的地方。
接下來的兩行嗓蘑,獲取本地的應用圖標须肆,然后分別將該路徑保存到TARGET_PATH 和 BASE_IMAGE_PATH 變量中
這行是將betaRibbon.png的圖標的尺寸改為合適的大小桩皿;
最后一行做了兩件事情休吠。首先,它在原始的應用圖標上添加"Hello World"文本业簿。然后該腳本執(zhí)行合成的功能--將有beta標識的圖片放置在其上面瘤礁。然后將合成的圖片保存為應用的圖標。
PATH=${PATH}:/usr/local/bin
IFS=$'\n'
function generateIcon() {
BASE_IMAGE_NAME=$1
TARGET_PATH="${BUILT_PRODUCTS_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/${BASE_IMAGE_NAME}"
BASE_IMAGE_PATH=$(find ${SRCROOT} -name ${BASE_IMAGE_NAME})
WIDTH=$(identify -format %w ${BASE_IMAGE_PATH})
FONT_SIZE=$(echo "$WIDTH * .15" | bc -l)
buildNumber=$(/usr/libexec/PlistBuddy -c "Print CFBundleVersion" "${PROJECT_DIR}/${INFOPLIST_FILE}")
convert bate.png -resize $WIDTHx$WIDTH resizedRibbon.png
convert ${BASE_IMAGE_PATH} -fill white -font Times-Bold -pointsize ${FONT_SIZE} -gravity south -annotate 0 "$buildNumber" - | composite resizedRibbon.png - ${TARGET_PATH}
}
generateIcon "AppIcon60x60@2x.png"
generateIcon "AppIcon60x60@3x.png"
generateIcon "AppIcon76x76~ipad.png"
generateIcon "AppIcon76x76@2x~ipad.png"
這使得整個圖像處理代碼為一個函數(shù),稱為generateIcon(),并且你將圖標的名稱傳遞給過程作為參數(shù)梅尤。腳本訪問這個論點通過使用$1,并設置變量BASE_IMAGE_PATH.$ { BASE_IMAGE_PATH }然后放置AppIcon60x60@2x之前放置的地方柜思。
-
你將會發(fā)現(xiàn)ImageMagick的一個新功能,Identity巷燥,這個功能會獲取圖片的信息赡盘。在這種情況下,你想使用通過格式化-format %w 得到的寬度在identify缰揪,去重新改變betaRibbon.png的大小陨享。
FONT_SIZE=$(echo "$WIDTH * .15" | bc -l)
- 設置一個FONT_SIZE變量可變寬度的五分之一葱淳。因為Unix算術不支持浮點運算,您必須使用bc程序。basic calculator的縮寫抛姑,bc能夠處理浮點類型的計算赞厕。
buildNumber=$(/usr/libexec/PlistBuddy -c "Print CFBundleVersion" "${PROJECT_DIR}/${INFOPLIST_FILE}")
- 通過使用PlistBuddy來獲取構建號
-
在Xcode中,到項目配置中定硝。你將會看到兩個默認的設置:Debug和Release皿桑。點擊+,選擇Duplicate Release 然后將它命名為 Beta蔬啡。
buildNumber=$(/usr/libexec/PlistBuddy -c "Print CFBundleVersion" "${PROJECT_DIR}/${INFOPLIST_FILE}") versionNumber=$(/usr/libexec/PlistBuddy -c "Print CFBundleShortVersionString" "${PROJECT_DIR}/${INFOPLIST_FILE}")
- 獲取版本號及編譯號诲侮,注意路徑路徑路徑
PATH=${PATH}:/usr/local/bin IFS=$'\n' buildNumber=$(/usr/libexec/PlistBuddy -c "Print CFBundleVersion" "${INFOPLIST_FILE}") versionNumber=$(/usr/libexec/PlistBuddy -c "Print CFBundleShortVersionString" "${INFOPLIST_FILE}") function generateIcon() { BASE_IMAGE_NAME=$1 TARGET_PATH="${BUILT_PRODUCTS_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/${BASE_IMAGE_NAME}" BASE_IMAGE_PATH=$(find ${SRCROOT} -name ${BASE_IMAGE_NAME}) WIDTH=$(identify -format %w ${BASE_IMAGE_PATH}) FONT_SIZE=$(echo "$WIDTH * .15" | bc -l) if [ "${CONFIGURATION}" == "Debug" ]; then convert debugRibbon.png -resize ${WIDTH}x${WIDTH} resizedRibbon.png convert ${BASE_IMAGE_PATH} -fill white -font Times-Bold -pointsize ${FONT_SIZE} -gravity south -annotate 0 "$versionNumber" - | composite resizedRibbon.png - ${TARGET_PATH} fi if [ "${CONFIGURATION}" == "Beta" ]; then convert betaRibbon.png -resize ${WIDTH}x${WIDTH} resizedRibbon.png convert ${BASE_IMAGE_PATH} -fill white -font Times-Bold -pointsize ${FONT_SIZE} -gravity south -annotate 0 "$versionNumber" - | composite resizedRibbon.png - ${TARGET_PATH} fi } generateIcon "AppIcon60x60@2x.png" generateIcon "AppIcon60x60@3x.png"
來自http://www.cocoachina.com/ios/20150909/13354.html
我不愿成為你退而求其次的人。
以上內(nèi)容純屬個人筆記箱蟆,不作其他用途