以下 this 教程
我已经定义了在我的应用中使用自定义字体的结构,但是我收到一个奇怪的错误枚举大小写的原始值不是唯一的基本上,我尝试使用相同的rawValue进行多个枚举]
我的代码如下
struct FontManager {
enum Font: String {
case customBlack = "CustomFont-Black"
case customBold = "CustomFont-Bold"
case customMedium = "CustomFont-Medium"
case customRegular = "CustomFont-Regular"
enum Size: CGFloat {
case navTitle = 20
case drawerListItemBadgeActiveFont = 10
case drawerHeaderTitle, formFiled = 16
case drawerHeaderSubTitle, drawerListItemActive, drawerListItemInActive = 14
case drawerHeaderEndText, formLabel = 12
case sampleCase = 18
}
func font(size:Size) -> UIFont {
let fontSize = size.rawValue
let fontName = self.rawValue
return UIFont(name: fontName, size: fontSize)!
}
}
}
对于任何随机数15、17、18,我都会收到这些错误请建议我该如何解决]
drawerHeaderTitle
,drawerHeaderSubTitle
,drawerListItemActive
和drawerHeaderEndText
完成的操作)省略枚举案例的显式值时,编译器将自动增加前一个案例的值并将其分配给新案例。因此,您真正拥有的是:case navTitle = 20
case drawerListItemBadgeActiveFont = 10
case drawerHeaderTitle /* = 11 */
case formFilled = 16
case drawerHeaderSubTitle /*= 17 */
case drawerListItemActive /*= 18*/
case drawerListItemInActive = 14
case drawerHeaderEndText /*= 15*/
case formLabel = 12
case sampleCase = 18 /* Duplicates drawerListItemBadgeActiveFont */
我不清楚您在这里要使用的未分配值是什么,但是请记住,每种情况必须都有唯一的值。如果这是您的意图,则不能将
drawerHeaderTitle
和formFiled
都分配给16。
Size(rawValue:CGFloat)
,但此值有两种情况-是吗?)。您可以改用几个选项-其中一个只是添加计算属性,而不使用原始值:enum Size {
case navTitle, drawerHeaderTitle, formFiled ...
....
var value: CGFloat {
switch self:
case navTitle:
return 20
case drawerHeaderTitle:
fallthrough
case formFiled:
return 26
...
}
}