Xcode 15 以后使用ColorResource/ImageResource设置颜色/图片

通过Color Set设置颜色

image.png

Xcode 15之前设置

通过字符串名字硬编码的方式

UIColor(named: "primary")

Xcode 15之后

最低支持iOS 11.0,系统会自动生成枚举值,通过枚举值设置

#if canImport(UIKit)
@available(iOS 11.0, tvOS 11.0, *)
@available(watchOS, unavailable)
extension UIKit.UIColor {

    /// Initialize a `UIColor` with a color resource.
    convenience init(resource: ColorResource) {
#if !os(watchOS)
        self.init(named: resource.name, in: resource.bundle, compatibleWith: nil)!
#else
        self.init()
#endif
    }
}

代码中使用

UIColor

  • swift
    调用resource:
let color = UIColor(resource: .primary)
  • oc
    1.需要导航#import "GeneratedAssetSymbols.h"头文件
    2.使用colorNamed, 颜色前缀为ACColorName...
#import "GeneratedAssetSymbols.h"

UIColor *color = [UIColor colorNamed:ACColorNamePrimary];

UIImage

  • swift
    调用resource:
let image = UIImage(resource: .flashsaleDetail)
  • oc
    1.需要导航#import "GeneratedAssetSymbols.h"头文件
    2.使用imageNamed,图片前缀为ACImageName
#import "GeneratedAssetSymbols.h"

UIImage *image = [UIImage imageNamed:ACImageNameHomeIcFlashdeal];

xib中使用

image.png

在xib中选择颜色后会自动生成以下这段代码:

<resources>
    <namedColor name="textMain">
        <color red="0.20000000000000001" green="0.20000000000000001" blue="0.20000000000000001" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
    </namedColor>
</resources>

对应颜色设置代码为:

<color key="textColor" name="textMain"/>

命名规范

查看了GeneratedAssetSymbols.swfitImageResource的命名,系统会自动转换(建议统一使用小驼峰命名),规则如下:

  • 以数字开头,转换命名时会添加_前缀
static let _11Sale = ImageResource(name: "11sale", bundle: resourceBundle)
  • 全大写命名保留
static let COD = ImageResource(name: "COD", bundle: resourceBundle)
  • 全小写命名保留
static let apple = ImageResource(name: "apple", bundle: resourceBundle)
  • 小驼峰命名方式
static let aqsInstagramActivity = ImageResource(name: "AQSInstagramActivity", bundle: resourceBundle)
static let flashsaleDetail = ImageResource(name: "FlashsaleDetail", bundle: resourceBundle)
static let verifideBuyer = ImageResource(name: "Verifide-Buyer", bundle: resourceBundle)
static let aboutShippingTimeIcon = ImageResource(name: "about_shipping_time_icon", bundle: resourceBundle)
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容