[英]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.