[英]How to Access Asset Catalog colour set programmatically
我想在我的代码中使用一个颜色集。 我希望读取资产文件,以便它可以访问颜色集。
所以我将我的颜色名称设置为bottomNavigation。
我试过使用UIColor(named: "bottomNavigation")
但它没有选择颜色。
我知道您可以通过为图像执行此操作来引用资产文件:
UIImage* image = [UIImage imageNamed:@"name-in-asset-catalog"];
但是我不确定您将如何为颜色执行此操作或如何引用资产文件以获取颜色集
您可以通过以下简单的 4 个步骤实现此目的:
向资产目录添加颜色:转到项目中的资产文件夹 -> 点击加号按钮 -> 在 Xcode 中选择 .xcassets 目录后,按左下角的加号按钮并选择“新颜色集”。 这是附加的链接(GIF),它将帮助您添加 ColorSet。
在 Storyboards 中使用资产目录颜色:为了在 Storyboard 或 Interface Builder 文件中使用资产目录颜色非常简单。 颜色字段,包括背景颜色、文本颜色,应显示您在“命名颜色”部分下的资产目录中定义的颜色。 这是附加的链接(GIF),它将帮助您使用 Storyboard 中的 ColorSet。
在 CODE 中使用资产目录颜色:首先创建一个扩展。
您首先需要创建自定义字体颜色的扩展(我在下面添加了代码)。
extension UIColor {
class var appBG: UIColor {
if let color = UIColor(named: "SillyBlue") {
return color
}
fatalError("Could not find appBG color")
}
}
然后直接在代码中使用,示例如下:
self.view.backgroundColor = UIColor.appBG
如果您遇到任何问题,请告诉我。
UIColor(named: "name")
仅在 iOS 11 中可用,并在您阅读其文档时向前提供:
@interface UIColor (UIColorNamedColors)
+ (nullable UIColor *)colorNamed:(NSString *)name NS_AVAILABLE_IOS(11_0); // load from main bundle
+ (nullable UIColor *)colorNamed:(NSString *)name inBundle:(nullable NSBundle *)bundle compatibleWithTraitCollection:(nullable UITraitCollection *)traitCollection NS_AVAILABLE_IOS(11_0);
@end
迅速:
extension UIColor {
@available(iOS 11.0, *)
public /*not inherited*/ init?(named name: String) // load from main bundle
@available(iOS 11.0, *)
public /*not inherited*/ init?(named name: String, in bundle: Bundle?, compatibleWith traitCollection: UITraitCollection?)
}
所以我发现是一个空间导致了颜色未被引用的问题, UIColor (named:"bottomNavigation")
。 它可能不会给出错误,但 UIColor 和括号之间不应该有任何空格: UIColor(named:"bottomNavigation")
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.