美文网首页
shell脚本-Objective-C自动生成UI属性gette

shell脚本-Objective-C自动生成UI属性gette

作者: 盖小聂 | 来源:发表于2019-06-12 10:47 被阅读0次

#!/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

相关文章

网友评论

      本文标题:shell脚本-Objective-C自动生成UI属性gette

      本文链接:https://www.haomeiwen.com/subject/mnskfctx.html