- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
一直在尝试 Xcode 为基于 macOS 的文档项目制作的 SwiftUI 默认项目代码。我将窗口创建代码从 NSDocument 子类移至新的 NSWindowController 子类。它开始是这样的:
init() {
let content = ContentView()
let windowSize = NSRect(x: 0, y: 0, width: Constants.defaultWidth, height: Constants.defaultHeight)
let window = NSWindow(contentRect: windowSize, styleMask: Constants.windowStyle, backing: .buffered, defer: false)
window.contentView = NSHostingView(rootView: content)
super.init(window: window)
// Other setup.
window.center()
window.delegate = self
}
现在我想尝试创建窗口而不指定其矩形。有一个初始化程序,它使用 NSViewController
作为基础:
init() {
let content = ContentView()
let controller = NSHostingController(rootView: content)
let window = NSWindow(contentViewController: controller)
//window.contentMinSize = NSSize(width: Constants.defaultWidth, height: Constants.defaultHeight)
window.styleMask.formUnion(.fullSizeContentView)
super.init(window: window)
// Other setup.
//window.center()
window.delegate = self
}
ContentView
只是 Xcode 的默认 View ,只有一个“Hello World!”文本 block 。它似乎没有固有的大小,因此窗口缩小到零。现在注释掉的 contentMinSize
属性并没有修复它。然后我仔细阅读了初始化程序的文档,并决定尝试使用自动布局。
init() {
// Create and size content.
let content = ContentView()
let controller = NSHostingController(rootView: content)
let guide = NSLayoutGuide()
controller.view.addLayoutGuide(guide)
guide.widthAnchor.constraint(greaterThanOrEqualToConstant: CGFloat(Constants.defaultWidth)).isActive = true
guide.heightAnchor.constraint(greaterThanOrEqualToConstant: CGFloat(Constants.defaultHeight)).isActive = true
controller.view.translatesAutoresizingMaskIntoConstraints = false
//controller.view.autoresizesSubviews = false
let window = NSWindow(contentViewController: controller)
window.styleMask.formUnion(.fullSizeContentView)
super.init(window: window)
// Other setup.
//window.center()
window.delegate = self
}
但我仍然看到一个消失的窗口。 (对 autoresizesSubviews
的注释掉更改没有帮助。)然后我注意到那里有一个窗口,但宽度为一像素,高度约为两个标题栏。但是,当我尝试调整其大小时,窗口变得可见,并跳转到文本 block 所需的最小大小。一旦触摸,我就无法将窗口缩小到显示文本 block 所需的下方。但是,该最小尺寸仍然小于我的默认宽度和高度,因此这些设置将被忽略。
那么,如何根据 NSWindow.init(contentViewController:)
想要使用自动布局来控制窗口的大小?
(嗯,当我输入此查询时,我不确定对 guide
所做的设置是否已连接到 controller.view
。也许我需要首先确保这一点。)
最佳答案
最后怀疑使用 controller.view
而不是新的 NSLayoutGuide
对象似乎有效。
init() {
// Create and size content.
let content = ContentView()
let controller = NSHostingController(rootView: content)
controller.view.autoresizesSubviews = false
controller.view.widthAnchor.constraint(greaterThanOrEqualToConstant: CGFloat(Constants.defaultWidth)).isActive = true
controller.view.heightAnchor.constraint(greaterThanOrEqualToConstant: CGFloat(Constants.defaultHeight)).isActive = true
let window = NSWindow(contentViewController: controller)
window.styleMask.formUnion(.fullSizeContentView)
super.init(window: window)
window.delegate = self
}
但这只是调整大小;我无法选择窗口在屏幕上的位置。
关于cocoa - 如何使用自动布局调整 NSWindow 的大小?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61297477/
我最近开始使用无表格 CSS 编写我所有的布局,但仍然更喜欢旧表格样式。快多了。无论如何,我陷入了这个即将完成的布局,但我需要一个小细节的帮助,我无法修复。 这里是测试地址: http://www.s
我正在尝试将节点形状的大小调整为节点文本的大小。我按照 https://github.com/cytoscape/cytoscape.js/issues/649 的指示进行操作。但是: 形状始终以高度
我是一名优秀的程序员,十分优秀!