xib與nib
開發(fā)中适滓,我們在使用他人的庫文件時(shí)敦迄,時(shí)常會(huì)遇到使用Bundle資源文件的情況。當(dāng)靜態(tài)庫項(xiàng)目中存在xib文件時(shí)凭迹,放入Bundle文件中的xib需要編譯成nib文件罚屋,因?yàn)锽undle文件放入項(xiàng)目中后是不會(huì)編譯的,如果直接將xib放入Bundle文件中嗅绸,啟動(dòng)項(xiàng)目后會(huì)出現(xiàn)報(bào)一個(gè)加載nib資源文件失敗的問題沿后。因此,這篇文章的價(jià)值就體現(xiàn)出來了朽砰,下午特意制作了一個(gè)shell腳本來 將一個(gè)xib 編譯成 對應(yīng)的 nib 文件 和 將一個(gè)文件夾中xib文件 編譯成 對應(yīng)的 nib文件尖滚。
效果截圖
單個(gè)xib文件快速制作
終端格式
$1 要生成的nib文件名 如TableViewCell.nib
$2 要編譯的xib文件路徑 如TableViewCell.xib
ibtool --errors --warnings --output-format human-readable-text --compile ibtool --errors --warnings --output-format human-readable-text --compile $1 $2
e.g.:
Bundle制作
網(wǎng)上文章較多,這里給一個(gè)鏈接iOS 制作Bundle
腳本分享
說明:
使用方法:
1.將xib文件或包含xib文件的文件夾 以及 nib.sh 放在同一個(gè)目錄下瞧柔;
2.cd 到該目錄下
3.終端執(zhí)行命令 bash nib.sh xib文件或文件夾
報(bào)錯(cuò):
xcodebuild' requires Xcode, but active developer directory '/Library/Developer/CommandLineTools' 漆弄。。造锅。
解決該問題只需要設(shè)置xcode中的命令行工具:打開Xcode -> 左上角Xcode -> Preference.. -> Locations -> Command Line Tools 選擇最新即可撼唾。
命令行工具
#######nib.sh
#!/bin/bash
# 將xib編譯成nib文件
function transitionToNib(){
ibtool --errors --warnings --output-format human-readable-text --compile ibtool --errors --warnings --output-format human-readable-text --compile $1 $2
}
#處理輸入的參數(shù) 并編譯成nib (/Users/zengchunjun/Desktop/selfStudy/xib-\>nib/TableViewCell.xib 分離出TableViewCell.xib 與 TableViewCell.nib)
function handlFile(){
ORIGIN=$1
echo $1
XIBFILE=${ORIGIN##*/}
echo "$XIBFILE xib文件"
FILENAME="${ORIGIN%.*}"
NIBFILEDIR=$FILENAME".nib"
NIBFILE=${NIBFILEDIR##*/}
echo "$FILENAME file名"
echo "$NIBFILE nib文件"
transitionToNib $NIBFILE $XIBFILE
}
#循環(huán)目錄,將每個(gè)xib編譯成nib
function scandir() {
local cur_dir parent_dir workdir
workdir=$1
cd ${workdir}
if [ ${workdir} = "/" ]
then
cur_dir=""
else
cur_dir=$(pwd)
fi
for dirlist in $(ls ${cur_dir})
do
if test -d ${dirlist};then
cd ${dirlist}
scandir ${cur_dir}/${dirlist}
cd ..
else
echo "${cur_dir}/${dirlist} 子文件"
handlFile ${cur_dir}/${dirlist}
fi
done
}
#判斷是否有輸入?yún)?shù) 需輸入一個(gè)xib文件 或 一個(gè)只包含xib的文件 注意哥蔚,xib文件名不能為空倒谷,否則不會(huì)被編譯成nib
if [ ! -n "$1" ] ;then
echo "you have not input a xibfile or directory of xibfile!"
return
else
echo "the word you input is $1"
fi
#判斷是文件還是文件夾
if test -d $1
then
echo "you input a directory"
scandir $1
exit 1
elif test -f $1
then
echo "you input a xibfile "
handlFile $1
exit 1
else
echo "the Directory isn't exist which you input,pls input a new one!!"
exit 1
fi