美文网首页
R.swift用法

R.swift用法

作者: BigBossZhu | 来源:发表于2019-10-10 14:25 被阅读0次

R.swift使用和介绍

R.swift可以获取强类型、自动完成的资源,如图像、字体和段落完全类型化。更少的强制转换和猜测方法将返回什么编译时检查,运行时不再有导致应用程序崩溃的错误字符串自动完成,再也不用怀疑图片名字是不是复制错了。默认会在编译时生成所有资源文件的对应文件,可以直接通过代码访问到

1. Images:图片R.image访问

普通写法:

let settingsIcon = UIImage(named: "settings-icon")
let gradientBackground = UIImage(named: "gradient.jpg")

R.swift写法:

let settingsIcon = R.image.settingsIcon()
let gradientBackground = R.image.gradientJpg()

2. fonts:字体R.font访问

普通写法:

let lightFontTitle = UIFont(name: "Acme-Light", size: 22)

R.swift写法:

let lightFontTitle = R.font.acmeLight(size: 22)

3. Resource files:资源文件R.swif访问

普通写法:

let jsonURL = Bundle.main.url(forResource: "seed-data", withExtension: "json")
let jsonPath = Bundle.main.path(forResource: "seed-data", ofType: "json")

R.swift写法:直接通过文件名访问

let jsonURL = R.file.seedDataJson()
let jsonPath = R.file.seedDataJson.path()

4. Colors:颜色R.color访问

普通写法:

view.backgroundColor = UIColor(named: "primary background")

R.swift写法:

view.backgroundColor = R.color.primaryBackground()

5. Localized strings:本地化文字中英文切换

普通写法:

let welcomeMessage = NSLocalizedString("welcome.message", comment: "")

R.swift写法:

let welcomeMessage = R.string.localizable.welcomeMessage()

6. Storyboards:sb和sb内控制器R.storyboard访问

普通写法:

let storyboard = UIStoryboard(name: "Main", bundle: nil)
let initialTabBarController = storyboard.instantiateInitialViewController() as? UITabBarController
let settingsController = storyboard.instantiateViewController(withIdentifier: "settingsController") as? SettingsControllerSettingsController

R.swift写法:

let storyboard = R.storyboard.main()
let initialTabBarController = R.storyboard.main.initialViewController()
let settingsController = R.storyboard.main.settingsController()

7. Segues:withIdentifier改为R.segue.overviewController访问

普通写法:

// Trigger segue with:
performSegue(withIdentifier: "openSettings", sender: self)

// And then prepare it:
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
    if let settingsController = segue.destination as? SettingsController,
       let segue = segue as? CustomSettingsSegue, segue.identifier == "openSettings" {
      segue.animationType = .LockAnimation
      settingsController.lockSettings = true
    }
  }

R.swift写法:

// Trigger segue with:
performSegue(withIdentifier: R.segue.overviewController.openSettings, sender: self)

// And then prepare it:
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
  if let typedInfo = R.segue.overviewController.openSettings(segue: segue) {
    typedInfo.segue.animationType = .LockAnimation
    typedInfo.destinationViewController.lockSettings = true
  }
}

8. Nib:R.nib访问,nib名字,创建实例,初始化,nib数组获取第一个元view全部使用R.nib

普通写法

let nameOfNib = "CustomView"
let customViewNib = UINib(nibName: "CustomView", bundle: nil)
let rootViews = customViewNib.instantiate(withOwner: nil, options: nil)
let customView = rootViews.first as? CustomView

let viewControllerWithNib = CustomViewController(nibName: "CustomView", bundle: nil)

R.swift写法

let nameOfNib = R.nib.customView.name
let customViewNib = R.nib.customView()
let rootViews = R.nib.customView.instantiate(withOwner: nil)
let customView = R.nib.customView.firstView(owner: nil)

let viewControllerWithNib = CustomViewController(nib: R.nib.customView)

9. Reusable table view cells:Nib创建的复用cell.通过R.nib访问

普通写法

class FaqAnswerController: UITableViewController {
  override func viewDidLoad() {
    super.viewDidLoad()
    //注册
    let textCellNib = UINib(nibName: "TextCell", bundle: nil)
    tableView.register(textCellNib, forCellReuseIdentifier: "TextCellIdentifier")
  }

  override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
    //复用创建
    let textCell = tableView.dequeueReusableCell(withIdentifier: "TextCellIdentifier", for: indexPath) as! TextCell
    textCell.mainLabel.text = "Hello World"
    return textCell
  }
}

R.swift写法

class FaqAnswerController: UITableViewController {
  override func viewDidLoad() {
    super.viewDidLoad()

    tableView.register(R.nib.textCell)
  }

  override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
    let textCell = tableView.dequeueReusableCell(withIdentifier: R.reuseIdentifier.textCell, for: indexPath)!
    textCell.mainLabel.text = "Hello World"
    return textCell
  }
}

10. Reusable collection view cells:Nib创建可复用collectionViewCell和上面访问类似

普通写法

class RecentsController: UICollectionViewController {
  override func viewDidLoad() {
    super.viewDidLoad()
    let talkCellNib = UINib(nibName: "TalkCell", bundle: nil)
    collectionView?.register(talkCellNib, forCellWithReuseIdentifier: "TalkCellIdentifier")
  }

  override func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
    let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "TalkCellIdentifier", for: indexPath) as! TalkCell
    cell.configureCell("Item \(indexPath.item)")
    return cell
  }
}

R.swift写法

class RecentsController: UICollectionViewController {
  override func viewDidLoad() {
    super.viewDidLoad()
    collectionView?.register(R.nib.talkCell)
  }

  override func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
    let cell = collectionView.dequeueReusableCell(withReuseIdentifier: R.reuseIdentifier.talkCell, for: indexPath)!
    cell.configureCell("Item \(indexPath.item)")
    return cell
  }
}

以后在项目中经常使用这种写法

相关文章

  • R.swift用法

    R.swift使用和介绍 R.swift可以获取强类型、自动完成的资源,如图像、字体和段落完全类型化。更少的强制转...

  • R.swift 的使用

    在项目中引入 R.swift,更安全的获取资源 什么是 R.swift 介绍 R.swift 前,我们先看看 R....

  • R.swift 使用详解

    R.swift 使用详解 R.Swift[https://github.com/mac-cain13/R.swif...

  • R.swift的安装和使用

    R.swift[https://github.com/mac-cain13/R.swift] 1.终端导入R.sw...

  • R.swift 使用

    安装 使用CocoaPods来对R.Swift进行安装:pod 'R.swift' 配置 进入项目的配置界面,在左...

  • R.swift 使用

    1. 在Podfile 中添加 pod 'R.swift' R.swift 2. 在项目中添加脚本 3. 修改脚本...

  • iOS 13 多语言适配

    本文基于 R.swift 中的 strings。R.swift 的具体使用就不介绍了,主要说应用内的语言设置和 i...

  • R.swift的使用以及安装

    什么是R.Swift R.Swift是一款基于Swift平台,针对iOS以及tvOS开发的资源引用框架 R.Swi...

  • R.swift的使用和安装

    一、先说说为啥子你可以选择使用R.swift呢?    R.swift可以获取强类型、自动完成的资源,如图像、字体...

  • cocoapods组件化(3)

    资源管理库R.swift的使用 安装pod 'R.swift' 脚本配置 工程中配置 在pod私有库中使用R.sw...

网友评论

      本文标题:R.swift用法

      本文链接:https://www.haomeiwen.com/subject/xptlyctx.html