【问题标题】:NSButton imagePosition not workingNSButton imagePosition 不起作用
【发布时间】:2015-12-20 14:15:51
【问题描述】:

我将 NSButton 的属性 imagePosition 设置为 ImageOnly
imagePosition 的类型是NSCellImagePosition


当我将 imagePosition 设置为ImageOnly 时,它仍然显示按钮的标题,尽管描述清楚地说明了

单元格显示图像,但不显示标题。

IB 也会隐藏标题,但在执行时会看到标题。
这是一个已知的错误还是我做错了什么?


注意:即使 NSButton 是以编程方式创建的,此问题仍然存在。


编辑:我在 github 上的开源 repo KSTabView 有这个错误。只有选择仍然是标题和图像时,两者都是可见的。

【问题讨论】:

  • 你确定按钮的引用不是 nil 吗? IE。你确定你的插座连接正确吗?你确定 imagePosition 没有在你的代码中设置为不同的值吗?无数应用程序创建了无数只工作正常的仅图像按钮,因此这是代码中的错误的可能性非常高,而不是 Cocoa 的问题。请邮政编码;您说即使以编程方式创建 NSButton 也会出现问题,请发布代码来证明这一点。
  • @bhaller:我已经进行了编辑。你可以看看我的图书馆。它以编程方式和 IB 添加按钮来演示我的问题
  • 既然是Swift,那我就留给别人看吧;我不认识斯威夫特。您应该使用 swift 标签标记问题。
  • 这个问题是关于 Cocoa 框架而不是关于 Swift 编程语言。
  • 您发布的代码是 Swift 代码。用“swift”标记问题并不表示该问题是 about Swift(就像您使用 osx 标记一样,即使您的问题不是 about OS X);它表明问题涉及 Swift。鉴于我不是 Swift 程序员,这对防止我浪费我和你的时间很有用。

标签: macos cocoa nsview appkit


【解决方案1】:

这是因为标准按钮忽略了您在 IB 中设置的文本位置。有时我只是因为这些问题而讨厌 IB。它有很多错误......

现在您要么删除 IB 中的标题,要么强制单元格不绘制任何标题,例如:

override func drawTitle(title: NSAttributedString, withFrame frame: NSRect, inView controlView: NSView) -> NSRect {

    return super.drawTitle(NSAttributedString(string: ""), withFrame: frame, inView: controlView)
}

【讨论】:

  • 另一种解决方法:覆盖 initWithCoder 并将 imagePosition 设置为 ImageOnly
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多