#!/bin/bash
#用途:Objective-C自动生成UI属性getter方法
#文件名:getterGenerate.sh
#参数:属性名数组
#使用方法:./getterGenerate.sh "testCount isTest test testArr testMArr testView testLbl testBtn testImgV"
#如果result.txt文件存在就删除它
if [[ -f "result.txt" ]]; then
rm result.txt
fi
#将getter方法模板写入文件中
cat > viewGetTemplate.txt <<_EOF_
- (UIView *)viewPropName {
if (!_viewPropName) {
_viewPropName = [[UIView alloc] init];
_viewPropName.backgroundColor = [UIColor colorWithHex:0xffffff alpha:0.0];
_viewPropName.layer.cornerRadius = 0.0f;
_viewPropName.clipsToBounds = YES;
}
return _viewPropName;
}
_EOF_
cat > labelGetTemplate.txt <<_EOF_
- (UILabel *)labelPropName {
if (!_labelPropName) {
_labelPropName = [[UILabel alloc] init];
_labelPropName.text = @"default text";
_labelPropName.font = [UIFont fontWithName:@"PingFang-SC-Regular" size:14];
_labelPropName.textColor = UIColorHex(0x333333);
_labelPropName.numberOfLines = 1;
_labelPropName.textAlignment = NSTextAlignmentLeft;
}
return _labelPropName;
}
_EOF_
cat > buttonGetTemplate.txt <<_EOF_
- (UIButton *)buttonPropName {
if (!_buttonPropName) {
_buttonPropName = [UIButton buttonWithType:UIButtonTypeCustom];
[_buttonPropName setTitle:@"button title" forState:UIControlStateNormal];
[_buttonPropName setTitleColor:UIColorHex(0x666666) forState:UIControlStateNormal];
_buttonPropName.titleLabel.font = [UIFont fontWithName:@"PingFang-SC-Regular" size:12];
[_buttonPropName addTarget:self action:@selector(btnAction:) forControlEvents:UIControlEventTouchUpInside];
_buttonPropName.layer.cornerRadius = 0.0f;
_buttonPropName.clipsToBounds = YES;
}
return _buttonPropName;
}
_EOF_
cat > imageViewGetTemplate.txt <<_EOF_
- (UIImageView *)imageViewPropName {
if (!_imageViewPropName) {
_imageViewPropName = [[UIImageView alloc] init];
_imageViewPropName.backgroundColor = [UIColor colorWithHex:0xF2F2F2 alpha:1.0];
_imageViewPropName.contentMode = UIViewContentModeScaleAspectFill;
_imageViewPropName.layer.cornerRadius = 0.0f;
_imageViewPropName.clipsToBounds = YES;
}
return _imageViewPropName;
}
_EOF_
#add subview
echo "输入的属性名称:"
echo "添加子视图:" >> result.txt
for var in $1
do
echo $var
echo "[self addSubview:self.$var];" >> result.txt
done
echo " " >> result.txt
echo "-------我是分割线----------" >> result.txt
echo " " >> result.txt
echo "输出的属性GET方法:" >> result.txt
#懒加载subview
for var in $1
do
#echo $var
if [[ $var == *View ]]; then
sed "s/viewPropName/$var/" viewGetTemplate.txt >> result.txt
elif [[ $var == *Lbl ]]; then
sed "s/labelPropName/$var/" labelGetTemplate.txt >> result.txt
elif [[ $var == *ImgV ]]; then
sed "s/imageViewPropName/$var/" imageViewGetTemplate.txt >> result.txt
elif [[ $var == *Btn ]]; then
sed "s/buttonPropName/$var/" buttonGetTemplate.txt >> result.txt
fi
done
#删除生成的临时文件
rm viewGetTemplate.txt labelGetTemplate.txt imageViewGetTemplate.txt buttonGetTemplate.txt
echo " "
echo "输出的结果:"
echo " "
#终端直接输出结果
cat result.txt
#输出结果之后移除result.txt文件
rm result.txt
网友评论