我试图在Swift中传递NSLineBreakMode的多个选项。在目标C中,这起作用:
label.lineBreakMode = NSLineBreakByWordWrapping | NSLineBreakByTruncatingTail;
参考this,我尝试在如下常量中设置选项:
var lineBreakOptions: NSLineBreakMode = [.ByWordWrapping,.ByTruncatingTail]
passageExcerpt.lineBreakMode = lineBreakOptions
但我得到的一个错误是:
上下文类型“NSLineBreakMode”不能与数组文本一起使用。
是否有方法为NSLineBreakMode的枚举传递多个选项?
最佳答案
NSLineBreakMode
是enum
类型,而不是OptionSet
类型(即使在Objective-C中)。只能指定一个案例。
在Objective-C中
NSLineBreakByWordWrapping | NSLineBreakByTruncatingTail
可以,但它只通过“或”原始值0和4将模式设置为
NSLineBreakByTruncatingTail
,请选中NSLog(@"%ld", NSLineBreakByWordWrapping); // 0
NSLog(@"%ld", NSLineBreakByTruncatingTail); // 4
NSLog(@"%ld", NSLineBreakByWordWrapping | NSLineBreakByTruncatingTail); // 4
所以Swift等价物是
label.lineBreakMode = .ByTruncatingTail