【问题标题】:NSButton change widthNSButton 改变宽度
【发布时间】:2015-08-11 23:24:31
【问题描述】:

我有一个带有标题和图像的按钮。按钮的标题会根据所选语言而变化。所以我希望按钮始终具有标题加图像的宽度。我认为这很容易:

var size = selectMenuItemButton.attributedTitle.size
myButton.bounds.size.width = size.width + 10.0

但按钮的宽度保持不变。我做错了什么?

编辑: 也试试

myButton.frame.size.width = size.width + 10.0

myButton.sizeToFit()

也没有用

编辑2: 我创建了一个带有两个按钮的清晰项目。如果单击一个按钮,则会更改另一个按钮的标题。结果是一样的,我也想改变宽度,但我做不到

@IBAction func buttonClicked(sender: AnyObject) {
    println(test.attributedTitle.size.width)
    myButton.title = "blublublublub"
    var size = test.attributedTitle.size
    myButton.frame.size.width = size.width
    println(test.attributedTitle.size.width)
}

【问题讨论】:

  • myButton.frame.size.width前后是什么?你能打印出来吗?
  • 如果我设置 frame.size.width 并在前后打印,我可以看到框架宽度更大。但是按钮仍然是相同的大小。如果我将宽度设置为 10 或 50,则结果始终相同。
  • 您是否将此按钮作为子视图添加到主视图中?剩下的代码在哪里?
  • 不,它不在子视图或其他东西中。我现在创建了一个新的清晰项目,我在运行时更改标题,结果是一样的。如果标题太长,则中断总是在同一个字符上。我唯一可以存档的是字体变大或变小
  • 你的问题不够清楚.. 你应该通过包含你正在使用的所有代码让其他人更容易帮助你

标签: macos swift width nsbutton


【解决方案1】:

我想我有答案了,我只需要在设置大小后再次设置标题:

myButton.title = "blublublublub"
var size = myButton.attributedTitle.size
myButton.frame.size.width = size.width
myButton.title = "blublublublub"

如果有人想在@IBAction 之外改变大小,你需要使用 dispatch:

dispatch_async( dispatch_get_main_queue()){
        self.myButton.title = "blublublublub"
        var size = self.myButton.attributedTitle.size
        self.myButton.frame.size.width = size.width
        self.myButton.title = "blublublublub"
    }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-12-17
    • 1970-01-01
    • 1970-01-01
    • 2011-05-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多