運行時改變App的圖標

運行時改變App的圖標


ImageMagick豌拙,Terminal驯嘱,Xcode址芯,去寫一個自動在你的app的圖標上加上"debug"或者"beta"標識的腳本。
  1. 安裝ImageMagick
  • 這是一個非常強大的圖形處理圖軟件套件牧抽,專門通過終端進行。你可以非常簡單地通過Homebrew來安裝ImageMagick

    brew update這是確定你是否從Homebrew上安裝的最新的安裝包遥赚,這個也是確認你是否有安裝Homebrew

    brew install ImageMagick使用Homebrew來安裝你所需要的安裝包

  1. 安裝Ghostscript
  • 因為你將使用的ImageMagick會依賴它扬舒。Ghostscript是一個軟件套件用于呈現(xiàn)PDF和PS文件。你需要它是因為它提供了支持ImageMagick的字體凫佛。

    brew install ghostscript
    brew doctor如果中間發(fā)生錯誤讲坎,運行這個命令,如果安裝失敗,你會得到一個消息愧薛,并告訴你如何去修復它晨炕。

  1. ImageMagick基本使用

  2. convert:一張圖片,修改它毫炉,然后保存為一張新的圖片府瞄;

  3. 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

  1. 你也要將debugRibbon.png 和 betaRibbon.png 放在和.xcodeproj同級的目錄文件中
  2. 應用程序圖標的名稱必須像AppIcon60x60@2x.png秆撮。Xcode使用此命名約定來確定使用哪個圖標根據(jù)設備使用
  3. 在你的工程中,選擇項目的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)容純屬個人筆記箱蟆,不作其他用途

最后編輯于
?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末沟绪,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子空猜,更是在濱河造成了極大的恐慌绽慈,老刑警劉巖,帶你破解...
    沈念sama閱讀 219,270評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件抄肖,死亡現(xiàn)場離奇詭異,居然都是意外死亡窖杀,警方通過查閱死者的電腦和手機漓摩,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,489評論 3 395
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來入客,“玉大人管毙,你說我怎么就攤上這事∽懒颍” “怎么了夭咬?”我有些...
    開封第一講書人閱讀 165,630評論 0 356
  • 文/不壞的土叔 我叫張陵,是天一觀的道長铆隘。 經(jīng)常有香客問我卓舵,道長,這世上最難降的妖魔是什么膀钠? 我笑而不...
    開封第一講書人閱讀 58,906評論 1 295
  • 正文 為了忘掉前任掏湾,我火速辦了婚禮,結果婚禮上肿嘲,老公的妹妹穿的比我還像新娘融击。我一直安慰自己,他們只是感情好雳窟,可當我...
    茶點故事閱讀 67,928評論 6 392
  • 文/花漫 我一把揭開白布尊浪。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪拇涤。 梳的紋絲不亂的頭發(fā)上捣作,一...
    開封第一講書人閱讀 51,718評論 1 305
  • 那天,我揣著相機與錄音工育,去河邊找鬼虾宇。 笑死,一個胖子當著我的面吹牛如绸,可吹牛的內(nèi)容都是我干的嘱朽。 我是一名探鬼主播,決...
    沈念sama閱讀 40,442評論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼怔接,長吁一口氣:“原來是場噩夢啊……” “哼搪泳!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起扼脐,我...
    開封第一講書人閱讀 39,345評論 0 276
  • 序言:老撾萬榮一對情侶失蹤岸军,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后瓦侮,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體艰赞,經(jīng)...
    沈念sama閱讀 45,802評論 1 317
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,984評論 3 337
  • 正文 我和宋清朗相戀三年肚吏,在試婚紗的時候發(fā)現(xiàn)自己被綠了方妖。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,117評論 1 351
  • 序言:一個原本活蹦亂跳的男人離奇死亡罚攀,死狀恐怖党觅,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情斋泄,我是刑警寧澤杯瞻,帶...
    沈念sama閱讀 35,810評論 5 346
  • 正文 年R本政府宣布,位于F島的核電站炫掐,受9級特大地震影響魁莉,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜募胃,卻給世界環(huán)境...
    茶點故事閱讀 41,462評論 3 331
  • 文/蒙蒙 一沛厨、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧摔认,春花似錦逆皮、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,011評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽秽梅。三九已至,卻和暖如春剿牺,著一層夾襖步出監(jiān)牢的瞬間企垦,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,139評論 1 272
  • 我被黑心中介騙來泰國打工晒来, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留钞诡,地道東北人。 一個月前我還...
    沈念sama閱讀 48,377評論 3 373
  • 正文 我出身青樓湃崩,卻偏偏與公主長得像荧降,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子攒读,可洞房花燭夜當晚...
    茶點故事閱讀 45,060評論 2 355

推薦閱讀更多精彩內(nèi)容