美文网首页
Xcode 15 以后使用ColorResource/Image

Xcode 15 以后使用ColorResource/Image

作者: Minoz_min | 来源:发表于2024-03-24 18:03 被阅读0次

    通过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)
    

    相关文章

      网友评论

          本文标题:Xcode 15 以后使用ColorResource/Image

          本文链接:https://www.haomeiwen.com/subject/hvncwdtx.html