swift4.0

iOS代码自动UIImage扩展

2019-03-28  本文已影响34人  279cb620c509

转载,参考出处! https://github.com/nixzhu/dev-blog

引用一下:

对于 app 内的图片,我们可用其名字获取:

let image = UIImage(named: "test_image")

但这样并不安全,我们可能拼错图片的名字,图片本身也可能被删除。而如果我们要在多处使用同一张图片,就更要时时小心。

我们可以用一个 UIImage 的扩展来消除我们的担忧:

extension UIImage {
    static var xxx_testImage: UIImage {
        return UIImage(named: "test_image")!
    }
}

之后我们使用时,只需:

let image = UIImage.xxx_testImage

我第一次使用,不知道太多命令无法得到想要的结果只能参照原文思想行动

1:搜索打印所有包含 “png”字段文件路径 ( /Volumes/US/XCode/animation-swift/animation-swift/Assets.xcassets 替换成自己的image路径);基本Contents.json都会包含.png文件,所以会打印所有Contents.json路径,注意也有重复路径(这个后面解决)

grep -l -r png /Volumes/US/XCode/animation-swift/animation-swift/Assets.xcassets 

输出:

/Volumes/US/XCode/animation-swift/animation-swift/Assets.xcassets/测试报告部分切图/亮泽度.imageset/Contents.json
/Volumes/US/XCode/animation-swift/animation-swift/Assets.xcassets/测试报告部分切图/人物头像.imageset/Contents.json
/Volumes/US/XCode/animation-swift/animation-swift/Assets.xcassets/测试报告部分切图/分数底色常态.imageset/Contents.json
/Volumes/US/XCode/animation-swift/animation-swift/Assets.xcassets/测试报告部分切图/分数底色点击.imageset/Contents.json
/Volumes/US/XCode/animation-swift/animation-swift/Assets.xcassets/测试报告部分切图/图层42.imageset/Contents.json
/Volumes/US/XCode/animation-swift/animation-swift/Assets.xcassets/测试报告部分切图/头像编号底色.imageset/Contents.json
/Volumes/US/XCode/animation-swift/animation-swift/Assets.xcassets/测试报告部分切图/头像编号底色.imageset/头像编号底色@2x.png
/Volumes/US/XCode/animation-swift/animation-swift/Assets.xcassets/测试报告部分切图/头像编号底色.imageset/头像编号底色@3x.png

2:awk -F '.imageset' '{print 1}' 以 '.imageset'分割字符串,'{print1}'输出前一部分

grep -l -r png /Volumes/US/XCode/animation-swift/animation-swift/Assets.xcassets | awk -F '.imageset' '{print $1}' 

输出:

/Volumes/US/XCode/animation-swift/animation-swift/Assets.xcassets/测试报告部分切图/亮泽度
/Volumes/US/XCode/animation-swift/animation-swift/Assets.xcassets/测试报告部分切图/人物头像
/Volumes/US/XCode/animation-swift/animation-swift/Assets.xcassets/测试报告部分切图/分数底色常态
/Volumes/US/XCode/animation-swift/animation-swift/Assets.xcassets/测试报告部分切图/分数底色点击
/Volumes/US/XCode/animation-swift/animation-swift/Assets.xcassets/测试报告部分切图/图层42
/Volumes/US/XCode/animation-swift/animation-swift/Assets.xcassets/测试报告部分切图/头像编号底色
/Volumes/US/XCode/animation-swift/animation-swift/Assets.xcassets/测试报告部分切图/头像编号底色
/Volumes/US/XCode/animation-swift/animation-swift/Assets.xcassets/测试报告部分切图/头像编号底色

3:awk -F '/' '{print NF}' 再以 '/'分割字符串,'{printNF}'输出最后部分;uniq 前面提到的去除重复项,awk '{ gsub(/-/, ""); print }' 用“”替换"-"

grep -l -r png /Volumes/US/XCode/animation-swift/animation-swift/Assets.xcassets | awk -F '.imageset' '{print $1}' | awk -F '/' '{print $NF}' | awk '{ gsub(/-/, "_"); print }'  | uniq

输出:

亮泽度
人物头像
分数底色常态
分数底色点击
图层42
头像编号底色

4:awk '{print "static var imageName_"1": UIImage {\n\treturn UIImage(named: \""1"")!\n}\n"}'关于这一段看大神写的介绍 https://github.com/nixzhu/dev-blog,用于生产如下代码:

static var xxx_testImage: UIImage {
​ return UIImage(named: "test_image")!
​ }

grep -l -r png /Volumes/US/XCode/animation-swift/animation-swift/Assets.xcassets | awk -F '.imageset' '{print $1}' | awk -F '/' '{print $NF}' | awk '{ gsub(/-/, "_"); print }' | uniq | awk '{print "static var imageName_"$1": UIImage {\n\treturn UIImage(named: \""$1"\")!\n}\n"}'

输出:

static var imageName_亮泽度: UIImage {
    return UIImage(named: "亮泽度")!
}

static var imageName_人物头像: UIImage {
    return UIImage(named: "人物头像")!
}

static var imageName_分数底色常态: UIImage {
    return UIImage(named: "分数底色常态")!
}

static var imageName_分数底色点击: UIImage {
    return UIImage(named: "分数底色点击")!
}

Ok ,粘贴复制进代码就可以愉快的玩耍啦啦啦啦!

上一篇下一篇

猜你喜欢

热点阅读