“UIFont”不能转换成“UIFont”?
所以我今天晚上把我的XCode更新到了7.3。
在我的其中一个项目中,我在设置字体的几个标签上出现以下错误:
'(name: String, size: CGFloat) -> UIFont' is not convertible to '(name: String, size: CGFloat) -> UIFont?'
编辑:这是我在导航栏中的标题视图的代码:
let aTitleFrame: CGRect = CGRectMake(0, aHeaderTitleSubtitleView.frame.midY / 2, 200, 24) let aTitleView: UILabel = UILabel(frame: aTitleFrame) aTitleView.backgroundColor = UIColor.clearColor() aTitleView.font = UIFont(name: "Roboto-Regular", size: 15) // ERROR POPS UP HERE aTitleView.textAlignment = NSTextAlignment.Center aTitleView.textColor = UIColor.whiteColor()
这是我的一个UILabel的Attributed String的代码:
let aAttributedFundLabel: NSMutableAttributedString = NSMutableAttributedString(string: "Raising\n$ \(fund)") aAttributedFundLabel.addAttribute(NSForegroundColorAttributeName, value: UIColor.darkGrayColor(), range: NSRange(location: 0, length: 7)) aAttributedFundLabel.addAttribute(NSFontAttributeName, value: UIFont(name: "Roboto-Regular", size: 15)!, range: NSRange(location: 0, length: 7)) // ERROR POPS UP HERE aAttributedFundLabel.addAttribute(NSForegroundColorAttributeName, value: UIColor.blackColor(), range: NSRange(location: 8, length: fund.characters.count + 2)) aAttributedFundLabel.addAttribute(NSFontAttributeName, value: UIFont(name: "Roboto-Regular", size: 16)!, range: NSRange(location: 8, length: fund.characters.count + 2)) // ERROR POPS UP HERE startupFund.attributedText = aAttributedFundLabel
这只发生在我整个项目中的两个文件中。
我打开了另一个项目,但是我能够无误地构build和运行它,即使我也在那里设置了多个标签的字体。
任何想法为什么发生这种情况?
TIA!
在其他地方,有人build议,你有这样的地方:
aTitleView.font = UIFont(name: "Roboto-Regular", size: 15)
…你应该尝试写这个:
aTitleView.font = UIFont.init(name: "Roboto-Regular", size: 15)
我可以不记得这个(因为我不能重现错误 ),所以我只是猜测! 但是知道它是否真正起作用是非常有趣的。
我也有这个问题。 对我来说固定的是closures整个模块优化。
Bulid设置> Swift编译器 – 代码生成>优化级别
我已经把它设置为最快(整体模块优化)。 当我把它设置为None时,我再也没有这个问题了。 对于上下文来说,这是一个与Objective-C和Swift混合的代码库。
我有同样的问题,这样做可以让我再次编译:
let descriptor = UIFontDescriptor(name: "OpenSans-Semibold", size: 10.0) label.font = UIFont(descriptor: descriptor, size: 10.0)
所以,使用UIFontDescriptor …
也这样做对我有用:
if let font = UIFont(name: "OpenSans-Semibold", size: 10) { label.font = font }