運行時改變App的圖標

運行時改變App的圖標


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

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

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

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

    brew install ghostscript
    brew doctor如果中間發生錯誤,運行這個命令,如果安裝失敗,你會得到一個消息,并告訴你如何去修復它。

  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"文本注釋的圖片旋轉的度數為0度;

  • test.png 輸出的文件名,并且ImageMagick將會覆蓋掉已經存在的文件。

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使用此命名約定來確定使用哪個圖標根據設備使用
  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"文本。然后該腳本執行合成的功能--將有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"
  • 這使得整個圖像處理代碼為一個函數,稱為generateIcon(),并且你將圖標的名稱傳遞給過程作為參數。腳本訪問這個論點通過使用$1,并設置變量BASE_IMAGE_PATH.$ { BASE_IMAGE_PATH }然后放置AppIcon60x60@2x之前放置的地方。

  • 你將會發現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


我不愿成為你退而求其次的人。
以上內容純屬個人筆記,不作其他用途

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容