Swift 中的外观代理 (iOS)

Posted

技术标签:

【中文标题】Swift 中的外观代理 (iOS)【英文标题】:Appearance Proxy in Swift (iOS) 【发布时间】:2014-06-03 14:34:32 【问题描述】:

有没有人尝试过在 swift 中使用外观代理?

这种语法不起作用,有没有人想出如何在segmentedControl或UITabBar等控件上设置标题文本属性?我想我很接近了

segmentedControl.titleTextAttributesForState(UIControlState.Normal) = 
NSDictionary(objects: [UIFont(name: fontFamilyRegular, size: 16.0)], 
forKeys: [NSFontAttributeName])

【问题讨论】:

【参考方案1】:

应该这样做:

segmentedControl.setTitleTextAttributes([
    NSFontAttributeName: UIFont(name: "Helvetica", size: 16.0)!,
    NSForegroundColorAttributeName: UIColor.blueColor()
    ], forState: UIControlState.Normal)

【讨论】:

太棒了!这就是我要找的。谢谢 如何使用这种语法设置多个属性?【参考方案2】:

确保解开字体 (!)

let font = UIFont(name: "HelveticaNeue-Light", size:15.0)!
UIBarButtonItem.appearance().setTitleTextAttributes([NSFontAttributeName:font,NSForegroundColorAttributeName:UIColor.redColor()], forState: UIControlState.Normal)

【讨论】:

您好,我刚刚安装了 XCode 6.3.1 和 iPhone 4s ios 8.3,它运行良好。也许这是自定义颜色?我只是在代码中更改为红色,以便人们现在可以复制和过去。如果它还不适合你,请告诉我。【参考方案3】:

对于 XCode 6.1,试试这个:

UITabBarItem.appearance().setTitleTextAttributes(NSDictionary(object: UIFont(name: "Helvetica", size: 16.0)!, forKey: NSFontAttributeName), forState: UIControlState.Normal)

【讨论】:

以上是关于Swift 中的外观代理 (iOS)的主要内容,如果未能解决你的问题,请参考以下文章

UIBarButtonItem 外观代理设置字体属性在 iOS 11 中不起作用

Swift 中的设计模式 #3 外观模式与适配器模式

iOS开发中OC和swift的对比

IOS 8.3 UIPopoverController tint 中的任何 UISegmentedControl 都是白色且不可调整

代理 适配 外观

ios 4.3 中的标签栏项目外观