美文网首页
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