Xcode本身没有这样的功能,但有一个开源项目可以实现: R.swift
它可以自动更新生成的文件,并支持许多不同的资源类型,如图像、字体、segue等。
R.swift
。如果您使用的是InterfaceBuilder
(也称为Storyboard
, xib
),则无需为每个视图定义ID。您可以在代码中绑定输出口。
与AndroidStudio不同,Xcode不会生成任何文件。
func viewDidLoad() {
let labelView = self.view.viewWithTag(0) as? UILabel
}
UIImage(named: "hello")
将从“资产”中检索名为 hello
的图像。 - GRiMe2DOptional
。默认情况下,所有类型和类都是"不兼容"的空值。也就是说,你不能将nil
赋值给它们,否则编译代码会失败。Optional
使它们可以赋值,所以你的应用程序不会崩溃,除非你强制解包它们。这里有更多信息:https://dev59.com/PmAg5IYBdhLWcg3wE3nQ#24026093 - GRiMe2DUIImageView
有一个类型为 UIImage?
的属性 image
,意味着它是一个 Optional<UIImage>
。你可以将 nil
赋值给 image
,这样视图就不会渲染任何内容。因此,如果你期望看到某些图片但却什么都没有看到,很可能是你打错了字。 - GRiMe2Dextension UIImage {
enum ImageId: String {
// These are your images NAMES,
// as in "SpriteMonster.jpg"
case SpriteMonster, SpriteHero, BaseLandscape
}
convenience init!(id: ImageId) {
self.init(named: id.rawValue)
}
}
使用方法:
let monster = UIImage(id: .SpriteMonster) // the "SpriteMonster.jpg" image
extension String {
enum StringId: String {
case Welcome = "Welcome to the game!"
case GameOver = "You loose! Game over!"
}
init(id: StringId) {
self = id.rawValue
}
}
使用方法:
let label = String(id: .Welcome) // "Welcome to the game!"
关于字体:
extension UIFont {
enum FontId {
case HelveticaNeueLarge
case HelveticaNeueMedium
case HelveticaNeueSmall
func font() -> UIFont {
switch self {
case .HelveticaNeueLarge:
return UIFont(name: "HelveticaNeue", size: 18)!
case .HelveticaNeueSmall:
return UIFont(name: "HelveticaNeue", size: 12)!
default:
return UIFont(name: "HelveticaNeue", size: 14)!
}
}
}
class func get(id: FontId) -> UIFont {
return id.font()
}
}
使用方法:
let font = UIFont.get(.HelveticaNeueLarge) // <UICTFont: 0x7ffd38f09180> font-family: "Helvetica Neue"; font-weight: normal; font-style: normal; font-size: 18.00pt