首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >奇怪的XCode 7接口生成器警告

奇怪的XCode 7接口生成器警告
EN

Stack Overflow用户
提问于 2015-10-03 14:49:44
回答 2查看 589关注 0票数 2

我在OSX应用程序中为我的几个标签设置了字体特征(粗体,轻巧),现在我收到了以下警告:

./MainMenu.xib:9: Xcode.IDEInterfaceBuilder.Cocoa.NSObject.BroadSystemFontWeights

没有任何解释。通常情况下,当我单击警告时,甚至没有选择所指的标签。有人能阐明这些警告的含义,以及如何消除这些警告吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-10-05 15:19:12

这是一个从Xcode 7开始的警告,当像标签或表视图列标题这样的UI元素使用旧的OSes上不可用的字体样式或变体时(当然,您的项目仍然针对它们)。

在我的项目中,在一个针对OS 10.9+的项目中,表视图列标题使用的是带有“中等”字体样式变化的系统字体,而不是常规字体。

奇怪的是,当Interface拒绝更改控件的样式时,我不得不重新启动Xcode。这可能是早期7.0.1Xcode版本的一个小故障。

票数 4
EN

Stack Overflow用户

发布于 2016-04-30 10:48:04

当前的答案几乎可以得到,但问题不是字体样式在旧的目标中不可用,而是Xcode没有正确地处理它们,有关详细信息,请参阅博客全文

如果要保留样式,请使用自定义textfield和自定义检查属性。打开标识检查器并将自定义类设置为TextField,首选字体权重属性将显示在属性检查器中,设置所需的值,生成并享受结果。

代码语言:javascript
复制
import AppKit

@IBDesignable public class TextField: NSTextField
{
    @IBInspectable public var preferredFontWeight: Int = 0

    override public func awakeFromNib() {
        if #available(OSX 10.11, *) {
            return
        }

        guard
        let weight: Int = self.preferredFontWeight where weight > 0,
        let font: NSFont = self.font,
        let name: String = font.familyName,
        let manager: NSFontManager = NSFontManager.sharedFontManager() else {
            return
        }


        // Full details here – https://developer.apple.com/library/mac/documentation/Cocoa/Reference/ApplicationKit/Classes/NSFontManager_Class/#//apple_ref/occ/instm/NSFontManager/convertWeight:ofFont:   
        //
        // 1 – ultralight
        // 2 – thin
        // 3 – light, extralight
        // 4 – book
        // 5 – regular, display
        // 6 – medium
        // 7 – demi, demibold
        // 8 – semi, semibold
        // 9 – bold
        // 10 – extra, extrabold
        // 11 – heavy
        // 12 – black
        // 13 – ultrablack
        // 14 – extrablack

        if let font: NSFont = manager.fontWithFamily(name, traits: manager.traitsOfFont(font), weight: weight, size: font.pointSize) {
            self.font = font
        }
    }
}

如果您并不真正关心样式,那么对所有文本使用常规的加权字体,应该可以解决这个问题,请参阅我之前的回答,以获得可用的选项。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32923876

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档