【问题标题】:NSToolbarItem: Size button to fit / set content hugging priorityNSToolbarItem:大小按钮以适应/设置内容拥抱优先级
【发布时间】:2016-11-14 10:48:49
【问题描述】:

我正在尝试使包含NSButtonNSToolbarItem 适合按钮的宽度。但是,当我将工具栏项的最大宽度设置为较高的值(例如 300)并且工具栏中有足够的空间时,按钮将始终展开到完整的 300 点。

我怎样才能让按钮增长到例如300 分,但如果这是容纳其内容所必需的(即拥抱其内容)?如果设置按钮contentHuggingPriorityNSToolbar 内,它似乎会被忽略。

【问题讨论】:

  • 按钮的文字总是一样的吗?
  • 不 - 那么我可以修复按钮的宽度。
  • 改标题后不能调整maxSize吗?
  • 我没想到,谢谢!另一方面,自动布局的重点是使这样的计算自动......
  • 我也这么认为。你有想过这种疯狂吗?

标签: cocoa autolayout nsbutton nstoolbar nstoolbaritem


【解决方案1】:

我为NSTextField 制作了它,但它也适用于NSButton。您必须在更改 stringValue 后进行设置(在 Xcode 中将 minSizemaxSize 设置为较低的值):

if let font = tf.font {
    let size = tf.stringValue.size(withAttributes: [NSAttributedStringKey.font: font])
    toolBarItem.minSize.width = size.width    // maybe + x
}

也许您必须在size.width 上添加一些像素,以便按钮足够大。

【讨论】:

    【解决方案2】:

    有同样的问题。 创建2个ib网点

    @IBOutlet weak var  toolBarRegistrationHint: NSButton!
    @IBOutlet weak var  toolBarRegistrationHintItem: NSToolbarItem!
    

    比在代码中

            var maxSize = toolBarRegistrationHintItem!.maxSize
    
            toolBarRegistrationHint!.title = "Pro ✔︎".localized
            toolBarRegistrationHint!.sizeToFit()
            maxSize.width = toolBarRegistrationHint!.frame.size.width
            toolBarRegistrationHintItem!.maxSize = maxSize
    

    【讨论】:

      【解决方案3】:

      您可以通过将按钮的边框设置更改为关闭并将图像的缩放选项设置为按比例向下来完成您想要的操作。

      这里有一些例子。您可以通过设置更改看到不同的结果预览。

      【讨论】:

      • 谢谢,但这不是我想要的。我的按钮不包含任何图像,但我希望它在包含文本时自动变小。
      • 即使内容在视觉上可能不会占用太多空间,但工具栏项仍会占用该空间并防止其他项占用它。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2023-02-18
      • 1970-01-01
      • 2021-01-08
      • 2018-12-01
      • 1970-01-01
      • 2019-03-09
      • 2021-10-19
      相关资源
      最近更新 更多