繁体   English   中英

如何以编程方式访问资产目录颜色集

[英]How to Access Asset Catalog colour set programmatically

我想在我的代码中使用一个颜色集。 我希望读取资产文件,以便它可以访问颜色集。

所以我将我的颜色名称设置为bottomNavigation。

我试过使用UIColor(named: "bottomNavigation")但它没有选择颜色。

我知道您可以通过为图像执行此操作来引用资产文件:

UIImage* image = [UIImage imageNamed:@"name-in-asset-catalog"];

但是我不确定您将如何为颜色执行此操作或如何引用资产文件以获取颜色集

我找不到更简单的方法,但可以通过以下方式实现

Cmd + Shift + L打开库,然后选择颜色选项卡。

然后将该颜色拖到代码中。 像这样的东西。 在此处输入图片说明

这是,假设您在.xcassets添加了一种颜色并且想要使用该颜色。

如果你想在 xibs 中使用颜色,如果你点击颜色,它可以在命名颜色部分轻松获得。

您可以通过以下简单的 4 个步骤实现此目的:

  1. 向资产目录添加颜色:转到项目中的资产文件夹 -> 点击加号按钮 -> 在 Xcode 中选择 .xcassets 目录后,按左下角的加号按钮并选择“新颜色集”。 这是附加的链接(GIF),它将帮助您添加 ColorSet。

  2. 在 Storyboards 中使用资产目录颜色:为了在 Storyboard 或 Interface Builder 文件中使用资产目录颜色非常简单。 颜色字段,包括背景颜色、文本颜色,应显示您在“命名颜色”部分下的资产目录中定义的颜色。 这是附加的链接(GIF),它将帮助您使用 Storyboard 中的 ColorSet。

  3. 在 CODE 中使用资产目录颜色:首先创建一个扩展。

您首先需要创建自定义字体颜色的扩展(我在下面添加了代码)。

extension UIColor {
class var appBG: UIColor {
    if let color = UIColor(named: "SillyBlue") {
        return color
    }
    fatalError("Could not find appBG color")
  }
}
  1. 然后直接在代码中使用,示例如下:

    self.view.backgroundColor = UIColor.appBG

如果您遇到任何问题,请告诉我。

它应该工作。

UIColor(named:) 需要 iOS 11 和更新版本。

首先,检查您的资产名称。

颜色名称

之后,您应该检查代码中的名称:

someView.backgroudColor = UIColor(named: "CustomColor")

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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM