Cocoa 承载NSView的层的大小调整问题

Cocoa 承载NSView的层的大小调整问题,cocoa,macos,calayer,nsview,autoresize,Cocoa,Macos,Calayer,Nsview,Autoresize,我有一个层承载NSView(-isFlipped=YES),其中有三个层承载子视图。子视图包括页眉、内容区域和页脚。页眉有一个三角形,可以折叠内容视图,只显示粘贴在一起的页眉和页脚 我可以用核心动画很容易地实现这一点,但是当我调整视图的大小时,出现了一个奇怪的问题。如果水平调整视图大小,我希望所有三个子视图都与新宽度匹配。如果我垂直调整它的大小,我希望子视图保持在原来的位置(即视图的底边应该能够移动而不影响子视图的位置(当然除了剪切)。原因是当contentView淡出时,我需要折叠视图的大小

我有一个层承载NSView(-isFlipped=YES),其中有三个层承载子视图。子视图包括页眉、内容区域和页脚。页眉有一个三角形,可以折叠内容视图,只显示粘贴在一起的页眉和页脚

我可以用核心动画很容易地实现这一点,但是当我调整视图的大小时,出现了一个奇怪的问题。如果水平调整视图大小,我希望所有三个子视图都与新宽度匹配。如果我垂直调整它的大小,我希望子视图保持在原来的位置(即视图的底边应该能够移动而不影响子视图的位置(当然除了剪切)。原因是当contentView淡出时,我需要折叠视图的大小

实际情况是,当高度发生变化时,所有三个子视图都被推到视图顶部上方……然后当水平面发生变化时,它们会弹回原位。这与视图和子视图的组合有关,因为如果子视图直接放置在窗口中,则它们的行为将正确另外,我尝试在视图中添加一个按钮,它的行为正常

我能够让按钮以同样的方式表现不好,使其层背太多…所以我认为层背与此有关

这就像是,当父视图调整大小并向上推时,即使坐标被翻转,也会将背衬层粘在父视图上


有什么想法吗?

层承载视图不应该有子视图。请参阅-(void)SetWantLayer:NSView类参考中的文档:

:


根视图可能应该是层备份视图,而不是承载层的视图?

层承载视图不应该有子视图。请参阅-(void)SetWantLayer:NSView类参考中的文档:

:

根视图应该是一个层备份视图,而不是一个层托管视图