gpt4 book ai didi

ios - 将嵌套枚举作为参数传递

转载 作者:行者123 更新时间:2023-11-28 10:20:31 25 4
gpt4 key购买 nike

我想不出一种方法来从便利初始化中的嵌套枚举中检索原始值。 fontName.rawValue 将不起作用,因为 Custom 没有大小写。有什么建议吗?

extension UIFont {
enum Custom {
enum Roboto: String {
case Regular = "RobotoRegular"
}
enum SanFrancisco: String {
case Semibold = "SFSemibold"
}
}

convenience init?(name fontName: Custom, size fontSize: CGFloat) {
self.init(name: fontName.rawValue, size: fontSize)
}
}

// Example Usage
UIFont(name: .Roboto.Regular, size: 18)

最佳答案

我有一个稍微不同的方法,你可以采用,但会使使用字体一样容易。首先,您需要为字体枚举创建一个协议(protocol),然后是一个扩展以提供默认方法,如下所示:

protocol CustomFontsProtocol {
var fontName: String { get }
}

extension CustomFontsProtocol {
func size(size: CGFloat) -> UIFont {
return UIFont(name: fontName, size: size)!
}
}

现在对于您的枚举,您可以像这样创建它:

enum CustomFonts {
enum Roboto: CustomFontsProtocol {
case Regular

var fontName: String {
switch self {
case Regular: return "RobotoRegular"
}
}
}

enum SanFrancisco: CustomFontsProtocol {
case Semibold

var fontName: String {
switch self {
case Semibold: return "SFSemibold"
}
}
}
}

这将允许您像这样调用您的字体:

CustomFonts.SanFrancisco.Semibold.size(18)

关于ios - 将嵌套枚举作为参数传递,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35784494/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com