iOS 10.3 UISegmentedControl setTitleTextAttributes 崩溃
Posted
技术标签:
【中文标题】iOS 10.3 UISegmentedControl setTitleTextAttributes 崩溃【英文标题】:iOS 10.3 UISegmentedControl setTitleTextAttributes Crash 【发布时间】:2017-04-06 07:39:55 【问题描述】:ios 10.3 在UISegmentedControl
的setTitleTextAttributes
方法上崩溃。
问题:
-
崩溃的原因是什么?
解决办法是什么?
注意:已经向苹果报告了这个问题,但还没有收到他们的消息。 https://openradar.appspot.com/31448227
示例代码:
class ViewController: UIViewController
@IBOutlet private weak var segmentedControl: UISegmentedControl!
override func viewDidLoad()
super.viewDidLoad()
//Crash!
segmentedControl.setTitleTextAttributes([UIFont.systemFont(ofSize: 14.0) : NSFontAttributeName], for: .normal)
编辑
正如@vedian 指出的那样,它应该是[key : value]
,而不是相反,但是上面的代码不会在低于 10.3 的 iOS 版本上崩溃。
【问题讨论】:
任何代码?那会更容易。任何属性或您只尝试过字体? @Lu_ 好吧,我也迁移到了 swift 3.1,但它仍然崩溃,你可以自己测试。 @BurhanuddinSunelwala 它对我有用。检查您的 IBOutlet 连接。 @RajeshkumarR 10.3? 10.2 和属性应该是[key:value]
格式[NSFontAttributeName: UIFont.systemFont(ofSize: 10.0)]
。尝试更改它。
【参考方案1】:
是您造成了问题,而不是 Apple。
按顺序创建字典,首先是key
,然后是value
。
segmentedControl.setTitleTextAttributes([NSFontAttributeName : UIFont.systemFont(ofSize: 14.0)], for: .normal)
【讨论】:
好的,试试这个。我没注意到。谢谢。但为什么它适用于 swift 2.3?【参考方案2】:使用
segmentedControl.setTitleTextAttributes([NSFontAttributeName: UIFont.systemFont(ofSize: 14.0)], for: .normal)
而不是
segmentedControl.setTitleTextAttributes([UIFont.systemFont(ofSize: 14.0) : NSFontAttributeName], for: .normal)
【讨论】:
以上是关于iOS 10.3 UISegmentedControl setTitleTextAttributes 崩溃的主要内容,如果未能解决你的问题,请参考以下文章
iOS 10.3 UISegmentedControl setTitleTextAttributes 崩溃