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

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. Flask基础(14)-->自定义过滤器

    Flask基础(13)-->自定义过滤器 什么是过滤器? 过滤器的本质就是函数.有时候我们不仅仅只是需要输出变量的值,我们还需要修改变量的显示,甚至格式化.运算等等,而在模板中是不能直接调用 P ...

  2. .net core 3.0 Signalr - 03 使用MessagePack压缩传输内容

    ## MessagePack基础介绍 Signalr默认使用的是json形式传递数据,但是signalr提供了灵活的扩展,支持MessagePack形式序列化数据,以增加性能降低网络传输的效果,极大的 ...

  3. Flume 知识点(六)Flume 的监控

    简述 使用 Flume 实时收集日志的过程中,尽管有事务机制保证数据不丢失,但仍然需要时刻关注 Source.Channel.Sink 之间的消息传输是否正常. 比如,SouceChannel 传输了 ...

  4. e课表项目第二次冲刺周期第六天

    昨天干了什么? 昨天是这次冲刺周期的第五天,我们的冲刺周期已经快过了一半,我们已经实现了对第一层界面的设计,所以我们的进度和我们的时间正好吻合,所以我们有信心完成我们的软件.我在网上搜了一些关于监听的 ...

  5. Python基础库之jieba库的使用(第三方中文词汇函数库)

    各位学python的朋友,是否也曾遇到过这样的问题,举个例子如下: “I am proud of my motherland” 如果我们需要提取中间的单词要走如何做? 自然是调用string中的spl ...

  6. C#用抽象类定义几何图形

    using System;/*using System.Data;*/namespace tx{    abstract class tx    {        public double chan ...

  7. 安卓控件 仪表盘控件 柱状图控件 曲线控件 xamarin.android 分类器 瓶子控件 报警控件 水箱控件 进度条控件等

    本篇博客主要介绍一个控件库,HslControls.dll 的界面,这个控件库支持winform,winform的参考另一篇文章:https://www.cnblogs.com/dathlin/p/1 ...

  8. 阿里云 RDS 数据库又发 CPU 近 100% 的“芯脏病”

    最近云界发生了2件事,一件是大事,一件是小事,大事是阿里云与微软合作推出了开放应用模型 Open Application Model(OAM),小事是由于微软 SQL Server 在阿里云上水土不服 ...

  9. 像艺术家一样思考 Think Like an Artist

    艺术家是如何获得灵感,如何找到自己的独特风格和主题的? 艺术家在绘画.写作.表演或歌唱前不会去征求谁的允许,而是随心而行 要想在数字时代获得满足感,我们需要变得有创造性 1.艺术家富有事业心 艺术家是 ...

  10. Attention机制全解

    前言 之前已经提到过好几次Attention的应用,但还未对Attention机制进行系统的介绍,之后的实践模型attention将会用到很多,因此这里对attention机制做一个总结. Seq2S ...