在新的项目中,接触到了一个很不错的框架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

原生写法

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

使用R.swift

  1. func icon() -> UIImage? {
  2. switch self {
  3. case .sourceRegulator:
  4. return R.image.home_SourceRegulatory()
  5. case .regulation:
  6. return R.image.home_regulationIcon()
  7. case .broker:
  8. return R.image.home_brokerIcon()
  9. case .engine:
  10. return R.image.home_engineIcon()
  11. case .falseBroker:
  12. return R.image.home_falseBrokerIcon()
  13. case .spread:
  14. return R.image.home_spredIcon()
  15. }
  16. }

2. 文件-Files

原始写法

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

使用R.swift后

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

3.字体-Fonts

原始用法

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

使用R.swift

  1. R.font.chalkduster(size: )

4.Localized strings

原始写法

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

使用R.swift

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

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

R.Swift优雅加载资源文件的更多相关文章

  1. Maven,预加载资源文件

    预加载资源文件需要先启用功能: <build> <resources> <resource> <directory>src/main/resources ...

  2. 动态加载资源文件(ResourceDictionary)

    原文:动态加载资源文件(ResourceDictionary) 在xaml中控件通过绑定静态资源StaticResource来获取样式Style有多种方式: 1.在项目的启动文件App中<App ...

  3. Java加载资源文件的两种方法

    处理配置文件对于Java程序员来说再常见不过了,不管是Servlet,Spring,抑或是Structs,都需要与配置文件打交道.Java将配置文件当作一种资源(resource)来处理,并且提供了两 ...

  4. Spring boot 国际化自动加载资源文件问题

    Spring boot 国际化自动加载资源文件问题 最近在做基于Spring boot配置的项目.中间遇到一个国际化资源加载的问题,正常来说只要在application.properties文件中定义 ...

  5. Style样式的四种使用(包括用C#代码动态加载资源文件并设置样式)

    Posted on 2012-03-23 11:21 祥叔 阅读(2886) 评论(6) 编辑 收藏 在Web开发中,我们通过CSS来控制页面元素的样式,一般常用三种方式: 1.       内联样式 ...

  6. PyQt5(5)——加载资源文件

    在实际中我们需要美化界面,就需要许多的自定义图片. 但是我们发现直接导入图像使用,等程序运行时会报错.???? 这就需要建立资源文件并且加载它们,程序就可以顺利运行了. 设计界面是如何加载资源文件呢? ...

  7. assets 加载资源文件

    引用:http://abc20899.iteye.com/blog/1096620 1.获取资源的输入流 资源文件 sample.txt 位于 $PROJECT_HOME/assets/ 目录下,可以 ...

  8. Java加载资源文件几种方法

    from: http://andyzhu.blog.51cto.com/4386758/775836/ import java.net.URL; import org.springframework. ...

  9. NHibernate动态加载资源文件

    最近做项目,又用到了以前做过的ORM框架--NHibernate. 此次想要实现的目标: 1.简单SQL用NHibernate的Session的CRUD方法实现 2.复杂SQL用Native SQL实 ...

随机推荐

  1. Build step 'Invoke top-level Maven targets' marked build as failure Finished解决

    最近用法 jenkins部署maven项目时候,突然出现Build step 'Invoke top-level Maven targets' marked build as failure Fini ...

  2. 一起来学Java注解(Annotation)

    目录 一. 什么是Annotation 二. Annotation的作用 2.1 编译器使用到的注解 2.2 .class文件使用到的注解 2.3 运行期读取的注解 三. 定义Annotation 3 ...

  3. Java源码解析|String源码与常用方法

    String源码与常用方法 1.栗子 代码: public class JavaStringClass { public static void main(String[] args) { Strin ...

  4. 如何搭建基于Docker的gitlab服务器集成CI/CD实现DEVOPS(完整版)

    From this lesson you will learn about 1,How to install and configure a docker based gitlab server 2, ...

  5. mybatis执行过程及经典面试题

    Mybatis执行流程 mybatis中xml解析是通过SqlSessionFactoryBuilder.build()方法. 初始化mybatis(解析xml文件构建成Configuration对象 ...

  6. MongoDB 学习笔记之 $push,$each,$slice组合使用

    $push使用: 使用$push给数组添加2个新成员 db.ArrayTest.updateOne({ "name" : "Bill"},{$push: {&q ...

  7. Vue躬行记(2)——指令

    Vue不仅内置了各类指令,包括条件渲染.事件处理等,还能注册自定义指令. 一.条件渲染 条件渲染的指令包括v-if.v-else.v-else-if和v-show. 1)v-if 该指令的功能和条件语 ...

  8. InfluxDB从原理到实战 - InfluxDB常用的基础操作

    0x00 基础操作介绍 在本文中将介绍InfluxDB常用的基础操作,帮助读者建立对InfluxDB的感性认识,快速的动手玩起来,持续查询(Continuous Queies).Group by.Se ...

  9. c语言中double类型数据的输入和输出

    double a;scanf("%f",&a);   //应用scanf("%lf",&a);执行上面语句时,发现double类型的输入不能使用 ...

  10. Blazor(一):运行初体验,全新的.net web的开发

    官网:https://dotnet.microsoft.com/apps/aspnet/web-apps/client 作者BBS:http://bbs.hslcommunication.cn/ 我们 ...