XCode 16.2:生成包装中资产的快速符号,并使它们公开

问题描述 投票:0回答:1

目前,从Xcode 15开始,可以为资产目录中的每个资产项目自动创建静态变量,例如颜色或图像

,例如,我有一种名为

ColorTestInsidePackage

的颜色,包装结构看起来像这样:

// swift-tools-version: 6.0 // The swift-tools-version declares the minimum version of Swift required to build this package. import PackageDescription let package = Package( name: "MyLibrary", platforms: [ .iOS(.v17), ], products: [ .library( name: "MyLibrary", targets: ["MyLibrary"]), ], targets: [ .target( name: "MyLibrary", resources: [ .process("Resources") ]), ] )
在包装中,我可以通过以下方式访问颜色:

import SwiftUI public final class TestClass { let colorResource = ColorResource.colorTestInsidePackage let color = Color(.colorTestInsidePackage) let colorFromExtension = Color.colorTestInsidePackage }
最后一行之所以可能仅仅是因为我在资产目录设置中强迫扩展生成:

enter image description here

,但是,当我尝试从应用程序中访问这些颜色时,生成的资产都无法访问,并且我遇到了汇编错误,仅仅是因为扩展程序是使用

internal

访问修改器创建的。

问题

有任何方法可以确保编译器使用public访问修饰符创建这样的扩展名,以便我可以使用此软件包在其他目标中使用它(例如,应用程序目标或其他软件包目标)?

用语case


在包装中创建UI组件库和设计系统,以便我可以使用UI组件库和应用程序本身内部的颜色(由于颜色显然是共享的),并且不要导入相同的颜色资产库进入应用程序目标。

如果您想从主应用程序访问这些颜色,则必须自己制作扩展名:

public extension Color { static var primaryColorInDesignSystem : Color = Color("primaryColorInDesignSystem", bundle: Bundle.module) static var secondaryColorInDesignSystem : Color = Color("secondaryColorInDesignSystem", bundle: Bundle.module) ... }

ios swift xcode assets asset-catalog
1个回答
0
投票

最新问题
© www.soinside.com 2019 - 2025. All rights reserved.