簡體   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