cocoa - 层托管 NSView 的调整大小问题

标签 cocoa macos calayer nsview autoresize

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

我可以使用核心动画轻松完成此任务,但是当我调整 View 大小时会出现一个奇怪的问题。如果我水平调整 View 大小,我希望所有三个 subview 都匹配新的宽度。如果我垂直调整它的大小,我希望 subview 保持在原来的位置(即 View 的底部边缘应该能够移动而不影响 subview 的位置(当然除了剪切)。这样做的原因是我需要折叠contentView 淡出时 View 的大小。

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

通过将其设置为图层支持,我能够以相同的方式让按钮出现错误行为......所以我认为图层支持与它有关。

这就像背景层在调整大小时粘在父 View 上,并且即使坐标翻转也被向上推。

有什么想法吗?

最佳答案

图层托管 View 不应有 subview 。请参阅 -(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 :

Root View 可能应该是一个图层支持的 View ,而不是托管 View 的图层?

关于cocoa - 层托管 NSView 的调整大小问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3814818/

相关文章:

python , mac - 在 "command v"中存储一个字符串

ios - 如何使用UIImages数组为CALayer的contents属性设置动画?

ios - 无法分配给属性 : 'CALayer' is immutable

cocoa - 是否存在另一种可用的 "Application architecture"?

macos - 如何在 OSX 上的 GNU Emacs 中获得透明窗口?

objective-c - 如何去除 UIBarButtonItem 的光泽效果?

iphone - 在 Objective-C 中获取 id 的字符串表示

ios - 如何在 ios 中的 CALayer 上添加按钮?

cocoa - 将外部应用程序嵌入到 Cocoa SplitView 中

objective-c - 自定义 NSSliderCell