【问题标题】:Resizing Problem with a Layer-Hosting NSView使用层托管 NSView 调整大小问题
【发布时间】:2010-09-28 16:13:33
【问题描述】:

我有一个包含三层托管子视图的托管层 NSView (-isFlipped = YES)。子视图是页眉、内容区域和页脚。页眉有一个显示三角形,它将折叠内容视图并仅显示页眉和页脚粘在一起。

我可以使用 Core Animation 轻松完成此操作,但是当我调整视图大小时会出现一个奇怪的问题。如果我水平调整视图大小,我希望所有三个子视图都匹配新宽度。如果我垂直调整它的大小,我希望子视图保持在原位(即视图的底部边缘应该能够移动而不影响子视图的位置(当然剪裁除外)。原因是我需要折叠contentView 淡出时视图的大小。

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

我可以让按钮以同样的方式行为不端,因为它也被层支持......所以我认为层支持与它有关。

这就像支持层在调整大小并被向上推时卡在父视图上,即使坐标被翻转。

有什么想法吗?

【问题讨论】:

    标签: cocoa macos calayer nsview autoresize


    【解决方案1】:

    托管视图不应有子视图。请参阅 -(void)setWantsLayer: NSView 类参考中的文档:

    http://developer.apple.com/library/mac/#documentation/Cocoa/Reference/ApplicationKit/Classes/NSView_Class/Reference/NSView.html%23//apple_ref/occ/instm/NSView/setWantsLayer:

    根视图应该是一个支持层的视图,而不是一个承载层的视图?

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-05-20
      • 1970-01-01
      • 1970-01-01
      • 2015-04-18
      • 1970-01-01
      • 2010-11-01
      • 1970-01-01
      相关资源
      最近更新 更多