swift - 从自定义类创建的 NSTextField 随机出现
问题描述
我有一个主 NSView 和 2 个 NSView 子视图,每个子视图都包含一个自定义 NSButton(全部在 Interface Builder 中创建)。我的自定义按钮类以编程方式在按钮下方创建一个 NSTextField,方法是从超级视图添加它:
以及自定义的 NSButton 类代码:
class buttonUpDown: NSButton {
var myLabel:NSTextField!
required public init?(coder: NSCoder) {
super.init(coder: coder)
let labelWidth=CGFloat(90)
print("init")
superview?.autoresizesSubviews = false
myLabel = NSTextField(frame: NSMakeRect(frame.origin.x+frame.size.width/2-labelWidth/2,frame.origin.y-20,labelWidth,16))
myLabel?.stringValue = "Mesh Quality"
myLabel.alignment = .center
myLabel.font? = .systemFont(ofSize: 8)
myLabel.backgroundColor = .red
myLabel.isBordered = false
myLabel.isEditable = false
superview!.addSubview(myLabel)
}
}
但是当我有 2 个时,只有 1 个标签随机出现在左侧或右侧:
我错过了在每个按钮下方显示的文本?
解决方案
发现问题。在 init 函数中创建标签会导致视图框架的定位不稳定。从绘图函数中添加它们,使其更可靠。
推荐阅读
- nginx - 如何使用 nginx 有条件地欺骗 HTTP 响应?
- javascript - xml 字符串到 xml 解析器:转换 html 字符代码
- sql - 从 SQL 结果中选择一系列结果
- c# - 如何修复 Entity Framework Core 中 X 类型错误的“无法确定导航 X 表示的关系”
- hex - RSA KEY 将十六进制转换为十进制
- javascript - 我应该避免嵌套函数吗?
- python - Pydantic:如何使用自定义属性名称解析 JSON
- javascript - 什么是快速了解 npm 子依赖项是否可升级的方法?
- javascript - 反应redux laravel api 419未知状态
- javascript - 我想用一个