Objective c 仅打印视图不正确地布局子视图

Objective c 仅打印视图不正确地布局子视图,objective-c,cocoa,autolayout,Objective C,Cocoa,Autolayout,我正在尝试打印(到PDF)屏幕上未显示且没有父视图的NSView 要显示打印对话框,我已将以下行添加到我的应用程序代理的applicationdFinishLaunching:: [myPrintView print:self]; 在“打印”对话框的预览中,将自底向上显示子视图。首先显示底部子视图,然后显示应位于底部视图上方的子视图等,最后显示顶部子视图 当我将打印视图添加到滚动视图中,使其在打印调用之前显示在屏幕上时,滚动视图和打印预览中的顺序都是正确的 self.scrollView.d

我正在尝试打印(到PDF)屏幕上未显示且没有父视图的NSView

要显示打印对话框,我已将以下行添加到我的应用程序代理的
applicationdFinishLaunching:

[myPrintView print:self];

在“打印”对话框的预览中,将自底向上显示子视图。首先显示底部子视图,然后显示应位于底部视图上方的子视图等,最后显示顶部子视图

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

self.scrollView.documentView = myPrintView;

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

我如何解决这个问题?保持翻转并解决错误的顺序,或者保持翻转=否并使用其他方法将其粘贴到页面顶部


我已将我的项目添加到中,以防有所帮助。

听起来您的布局不明确,这意味着您的nib没有足够的约束来确保子视图显示在您想要的位置。您看到的两个布局都满足约束,因此您需要约束布局的更多方面,以便子视图正好显示在您想要的位置

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

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

    这段WWDC视频对我所见过的模棱两可的布局给出了最好的解释

    出于调试目的,您可以将视图添加到窗口中,然后使用自动布局


    或者,您可以关闭此nib的自动布局。因为您的视图很简单,所以您可以使用弹簧和撑杆以旧的方式很容易地管理版面。

    看起来这是版面的问题,而不是打印顺序的问题。如何将视图添加到打印视图中?您是否调用
    -setFrame:
    ?是否打开自动布局?是,我正在使用自动布局。所有子视图都添加到XIB中,除了将printview本身添加到父视图以进行测试之外。我做了一个搜索以确定,但我没有任何地方可以手动设置帧。