我正在使用一个名为HMSegmentedControl的分段控件库,它并不太复杂,但是,设置它的titleTextAttributes会给我带来一些麻烦。
titleTextAttributes是通过Swift输入的。在objc文件中,它是[AnyHashable: Any]!
我要做的是:

let segmentedControl = HMSegmentedControl(sectionTitles: ["All", "A", "B"])!
segmentedControl.titleTextAttributes = [
      NSFontAttributeName: Styleguide.Fonts.someFont.font(ofSize: 9),
      NSForegroundColorAttributeName: UIColor.lightGray
]

Xcode为@property (nonatomic, strong) NSDictionary *titleTextAttributesNSFontAttributeName提供了“使用未解析标识符”错误

最佳答案

因为这些是Obj-C标识符。你应该使用快速的:
NSAttributedStringKey.font(或者通常简单地.font,swift在处理本机对象时可以推断出其余的内容,但在这种情况下,如果swift声明为AnyHashable: Any,则可能不会这样做)
以及NSAttributedStringKey.foregroundColor
所以你想要的是:

segmentedControl.titleTextAttributes = [
      NSAttributedStringKey.font: Styleguide.Fonts.someFont.font(ofSize: 9),
      NSAttributedStringKey.foregroundColor: UIColor.lightGray
]

09-11 10:13