设置 QLPreviewingController 的 preferredContentSize 会中断自动调整大小
Setting preferredContentSize of QLPreviewingController breaks auto resizing
按照这里的回答:
我设置了 QLPreviewingController
的 preferredContentSize
,这会按预期更改 window 大小,但这似乎会破坏所有子视图的后续自动调整大小。设置后,当用户手动调整大小或进入全屏时,内容将不再跟踪预览window大小。
在设置 preferredContentSize
属性 后,任何试图以编程方式设置视图大小、调整蒙版大小或约束的尝试都会导致类似
的错误
<NSViewServiceMarshal: 0x7fe1b740f170 <QLPreviewExtensionViewController: 0x600000e31b00 <NSServiceViewControllerWindow: 0x7fe1b760b350>>> attempted to set frame of <NSServiceViewControllerWindow: 0x7fe1b760b350> from {{17, 382}, {820, 846}} to {{17, 382}, {800, 600}} and got {{17, 136}, {820, 846}}; set breakpoint on -[NSViewServiceMarshal actualFrame:differsFromSpecifiedFrame:oldFrame:ofWindow:] to catch this
并没有明显的效果。设置断点只告诉我它发生在系统后台线程中,大约在我尝试更改视图大小时。
编辑:另一个发现:如果我将所有视图的帧值和 window 打印到日志中,打印的尺寸就是我要求的尺寸,而不是屏幕上实际显示的较小尺寸! IE。如果我将 preferredContentSize 设置为 (820, 846),我的调试 NSLogs 和 Xcode 调试视图层次结构显示 window 即 820 x 846,而屏幕上显示的实际 window 是两倍高又宽。
编辑:制作了一个视频来说明这个问题:https://youtu.be/l7b1jq7pDWY
这似乎是 Catalina 独有的错误(早期版本不支持这种 Quicklook 扩展。)升级到 Big Sur 后它消失了。
按照这里的回答:
QLPreviewingController
的 preferredContentSize
,这会按预期更改 window 大小,但这似乎会破坏所有子视图的后续自动调整大小。设置后,当用户手动调整大小或进入全屏时,内容将不再跟踪预览window大小。
在设置 preferredContentSize
属性 后,任何试图以编程方式设置视图大小、调整蒙版大小或约束的尝试都会导致类似
<NSViewServiceMarshal: 0x7fe1b740f170 <QLPreviewExtensionViewController: 0x600000e31b00 <NSServiceViewControllerWindow: 0x7fe1b760b350>>> attempted to set frame of <NSServiceViewControllerWindow: 0x7fe1b760b350> from {{17, 382}, {820, 846}} to {{17, 382}, {800, 600}} and got {{17, 136}, {820, 846}}; set breakpoint on -[NSViewServiceMarshal actualFrame:differsFromSpecifiedFrame:oldFrame:ofWindow:] to catch this
并没有明显的效果。设置断点只告诉我它发生在系统后台线程中,大约在我尝试更改视图大小时。
编辑:另一个发现:如果我将所有视图的帧值和 window 打印到日志中,打印的尺寸就是我要求的尺寸,而不是屏幕上实际显示的较小尺寸! IE。如果我将 preferredContentSize 设置为 (820, 846),我的调试 NSLogs 和 Xcode 调试视图层次结构显示 window 即 820 x 846,而屏幕上显示的实际 window 是两倍高又宽。
编辑:制作了一个视频来说明这个问题:https://youtu.be/l7b1jq7pDWY
这似乎是 Catalina 独有的错误(早期版本不支持这种 Quicklook 扩展。)升级到 Big Sur 后它消失了。