gpt4 book ai didi

objective-c - 仅打印 View 的 subview 布局不正确

转载 作者:行者123 更新时间:2023-12-03 17:23:30 24 4
gpt4 key购买 nike

我正在尝试打印(到 PDF)一个 NSView,该 NSView 未显示在屏幕上并且没有父 View 。

为了显示打印对话框,我已将以下行添加到我的应用程序委托(delegate)的 applicationDidFinishLaunching::

[myPrintView print:self];

Subviews from bottom to top

在打印对话框的预览中, subview 自下而上显示。首先显示底部 subview ,然后是应该位于底部 View 上方的 subview ,最后显示顶部 subview 。

当我将打印 View 添加到 ScrollView ,使其在打印调用之前显示在屏幕上时, ScrollView 和打印预览中的顺序都是正确的。

self.scrollView.documentView = myPrintView;

Subviews in correct order

我将打印 View 更改为不翻转,在两种情况下它都以正确的顺序显示,但它放在纸张的底部。

Correct order but at bottom of page

我该如何解决这个问题?保持翻转并解决错误的顺序,还是保持翻转 = NO 并使用不同的方法将其粘贴到页面顶部?

我已将我的项目添加到 https://bitbucket.org/bpeiren/print-experiments ,以防有帮助。

最佳答案

听起来您的布局不明确,这意味着您的 Nib 没有足够的约束来确保 subview 出现在您想要的位置。您看到的两个布局都满足约束,因此您需要约束布局的更多方面,以便 subview 出现在您想要的位置。

从您发布的布局的两张图片来看,我建议您尝试:

  1. 将顶 View 的顶部固定到容器的顶部
  2. 固定顶 View 和底 View 之间的垂直间距

已添加:我刚刚下载了 your .xib很明显,您将顶部 subview 限制在 View 顶部,并将 subview 的垂直间距限制在页面下方。所以这并不能解决问题。高度是可变的吗?如果没有,请尝试限制容器的高度。为什么要将文本和图像字段包含在 NSView 中?把它们拿出来可能更简单。 (您没有收到有关无法满足约束的日志消息,对吧?)

此 WWDC 视频,Introduction to Auto Layout给出了我所见过的对模糊布局的最好解释。

出于调试目的,您可以将 View 添加到窗口,然后使用自动布局,this good answer describes .

或者,您可以关闭此 Nib 的自动布局。由于您的 View 很简单,因此您可以使用 Spring 和支柱的旧方法轻松管理布局。

关于objective-c - 仅打印 View 的 subview 布局不正确,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14082997/

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