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 在UISegmentedControlsetTitleTextAttributes 方法上崩溃。

问题:

    崩溃的原因是什么? 解决办法是什么?

注意:已经向苹果报告了这个问题,但还没有收到他们的消息。 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 崩溃

在 iOS 10.3 上停止蓝牙警报弹出

iOS 10.3 - 如何回复 App Store 评论?

为啥将 iOS 升级到 10.3 后 firebase 通知不再起作用?

iOS 10.3 中的备用图标

WKWebview 未在 iOS 10.3 中完全加载