gpt4 book ai didi

swift - 如何通过设置 frame 属性来移动或调整 NSView 的大小?

转载 作者:行者123 更新时间:2023-11-28 11:07:44 37 4
gpt4 key购买 nike

我在 Storyboard中创建了 NSView。在本例中,它是一个 NSTextField。在 NSViewControllerviewDidLoad() 方法中,我想有条件地调整 NSTextField 的大小和位置,但设置框架没有效果。

例如:

class ViewController: NSViewController {

@IBOutlet var label: NSTextField!

override func viewDidLoad() {
super.viewDidLoad()

// Do any additional setup after loading the view.
label.frame = NSRect(x: 0, y: 0, width: 200, height: 17)
label.setNeedsDisplay()
}
}

加载 View 时,标签仍然具有在界面构建器中设置的原始框架,而不是新设置的框架。

如何以编程方式移动/调整标签大小?

最佳答案

自动布局系统是这里的罪魁祸首。当您设置框架时,自动布局系统会覆盖它以重新建立 Storyboard 中设置的隐式约束。

将标签的 translatesAutoresizingMaskIntoConstraints 属性设置为 true。这告诉自动布局系统它应该创建一组新的自动布局约束来满足您设置的新框架:

class ViewController: NSViewController {

@IBOutlet var label: NSTextField!

override func viewDidLoad() {
super.viewDidLoad()

// Do any additional setup after loading the view.
label.frame = NSRect(x: 0, y: 0, width: 200, height: 17)
label.translatesAutoresizingMaskIntoConstraints = true
label.setNeedsDisplay()
}
}

关于swift - 如何通过设置 frame 属性来移动或调整 NSView 的大小?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36732958/

37 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com