用Swift来获取项目中的.bundle资源文件

这是项目中的资源文件XXX.bundle。
这里写图片描述

首先,新建一个Bundle的扩展类:Bundle+XXX.swift

import UIKit

extension Bundle {

    // 定义一个静态变量xxxBundle,用于获取项目本地的Bundle文件:XXX.bundle。
    static var xxxBundle: Bundle{
        return Bundle.init(path:Bundle.init(for: xxxComponent.self).path(forResource: "XXX", ofType: "bundle")!)!
    }

    // 定义一个静态变量arrowImage,用于获取图片文件:“arrow.png”。
    static var arrowImage: UIImage{
        return (UIImage.init(contentsOfFile: self.xxxBundle.path(forResource: "arrow@2x", ofType: "png")!)?.withRenderingMode(UIImageRenderingMode.alwaysTemplate))!
    }

    // 类方法
    class func localizedString(forKey key: String) -> String {
        return self.localizedString(forKey: key, value: nil)
    }

    // 参数value为可选值,可以传值为nil。
    class func localizedString(forKey key: String, value: String?) -> String {
        var language = Locale.preferredLanguages.first!
        // (iOS获取的语言字符串比较不稳定)目前框架只处理en、zh-Hans、zh-Hant三种情况,其他按照系统默认处理
        if language.hasPrefix("en") {
            language = "en"
        } else if language.hasPrefix("zh") {
            language = "zh-Hans"
        } else {
            language = "en"
        }

        let bundle = Bundle.init(path: self.xxxBundle.path(forResource: language, ofType: "lproj")!)
        let v = bundle?.localizedString(forKey: key, value: value, table: nil)
        return Bundle.main.localizedString(forKey: key, value: v, table: nil)
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值