在新的项目中,接触到了一个很不错的框架R.swift,可以帮助更方便安全的使用资源文件,相信已经使用过的或者还没有接触过的,一旦使用过了解过它,会爱上这个框架工具!

一、R.swift特点

  • 当项目build之后,R.swift开始运行,也就是说添加完图片等资源文件时,build一下,R.swift第三方库就会设置好刚刚添加的资源.
  • 加入的资源文件在build后自动在R.generated.swift文件中按照类型生成结构体.
  • 强类型,不需要类型判断和转换,自动返回对应类型.
  • 支持了多种资源类型.
  • 避免了资源名称拼写错误.

二、安装

  1. 添加pod 'R.swift'到你的Podfile文件中,紧接着运行pod install
  2. 打开工程文件,点击工程文件名称,选择TARGETS,点击Build Phases,在点击左上角的“+”添加New Run Script Phas

  3. 脚本输入"$PODS_ROOT/R.swift/rswift" generate "$SRCROOT/R.generated.swift",input files 添加   $TEMP_DIR/rswift-lastrun,out files 添加 $SRCROOT/R.generated.swift

  4. 拖拽R.generated.swift文件到项目中.

三、具体使用

1. 图片-images

原生写法

let sIcon = UIImage(named: "settings-icon")

使用R.swift

func icon() -> UIImage? {
switch self {
case .sourceRegulator:
return R.image.home_SourceRegulatory()
case .regulation:
return R.image.home_regulationIcon()
case .broker:
return R.image.home_brokerIcon()
case .engine:
return R.image.home_engineIcon()
case .falseBroker:
return R.image.home_falseBrokerIcon()
case .spread:
return R.image.home_spredIcon()
}
}

2. 文件-Files

原始写法

let plistURL = Bundle.main.url(forResource: "Book", withExtension: "plist")
let jsonPath = Bundle.main.path(forResource: "data", ofType: "json")

使用R.swift后

let plistURL = R.file.bookPlist()
let jsonPath = R.file.DataJson.path()

3.字体-Fonts

原始用法

let lightFontTitle = UIFont(name: "chalkduster", size: )

使用R.swift

R.font.chalkduster(size: )

4.Localized strings

原始写法

let welcomeMessage = NSLocalizedString("welcome.message", comment: "")
let settingsTitle = NSLocalizedString("title", tableName: "Settings", comment: "") // Formatted strings
let welcomeName = String(format: NSLocalizedString("welcome.withName", comment: ""), locale: NSLocale.current, "Alice") // Stringsdict files
let progress = String(format: NSLocalizedString("copy.progress", comment: ""), locale: NSLocale.current, , )

使用R.swift

// Localized strings are grouped per table (.strings file)
let welcomeMessage = R.string.localizable.welcomeMessage()
let settingsTitle = R.string.settings.title() // Functions with parameters are generated for format strings
let welcomeName = R.string.localizable.welcomeWithName("Alice") // Functions with named argument labels are generated for stringsdict keys
let progress = R.string.localizable.copyProgress(completed: , total: )

上面就是本人项目经常使用到的,当然还有其他的用法和用处,不过,通过R.swift已经大大的方便我们日常开发,希望大家在项目中尽早的使用R.swift这个第三方库.

最新文章

  1. jQuery带控制按钮向上和向下滚动文本列表
  2. 使用私有Pod Spec的类库--提高公司开发效率
  3. studio--如何将Eclipse中的项目迁移到Android Studio 中
  4. 异步FIFO为什么用格雷码
  5. 原生与jqueryDOM
  6. (一)backbone - API入门
  7. C++常量指针与常量数据
  8. 常用wxPython事件描述
  9. Delphi的RTTI还分为对类和对象的判断,以及对普通属性的判断——相比之下,C++的RTTI实在太弱!
  10. oc知道经纬度求位置
  11. 转 mybatis javaType与jdbcType对应
  12. Math.pow用法及实现探究
  13. RabbitMQ学习-1
  14. http跳转htts的htaccess文件设置
  15. css中height 100vh的应用场景,动态高度百分比布局,浏览器视区大小单位
  16. jenkins使用git拉取gitlab代码
  17. php7函数,声明,返回值等新特性介绍
  18. 取得数据表中前N条记录,某列重复的话只取第一条记录
  19. 生产者与消费者+Queue(线程安全)
  20. 五个免费UML建模工具

热门文章

  1. redis-自动补全
  2. .NET进阶篇-丑话先说,Flag先立--致青春
  3. ABP vNext 不使用工作单元为什么会抛出异常
  4. Spring Boot 2.X(一):入门篇
  5. Android Studio 优秀插件: Parcelable Code Generator
  6. MongoDB 走马观花(全面解读篇)
  7. 前端css杂记
  8. 用java求整数和
  9. idea破解版安装、配置jdk以及建立一个简单的maven工程
  10. Vue-cli中axios传参的方式以及后端取的方式