macos - NSSplitViewController 导致包含的 View 绘制在窗口角上

标签 macos cocoa xcode-storyboard nssplitviewcontroller

我正在尝试使用 Cocoa 创建一个小型 Finder 克隆。我将源列表 TableView (充当侧边栏)和标准 TableView 放置在由 NSSplitViewController 控制的 NSSplitView 内。 不幸的是,当我运行它时,标准 TableView 的白色背景被绘制在窗口的右下角,导致非圆角: Bottom right corner drawn over

我可以通过不使用 NSSplitViewController 来避免这个问题,同时使用标准 nib 文件或 Storyboard来获得所需的结果:

Correctly drawn, albeit without NSSplitViewController

但是......我真的很想使用NSSplitViewController。有什么办法可以防止这种情况发生吗?

Here is the Xcode workspace with the projects获取屏幕截图。

最佳答案

我见过这样的问题,它似乎是真正的错误。但有一个解决方法。您需要确保 NSSplitViewController 在 CA 层支持的 View 中呈现自身。因此,为了在您的项目中执行此操作,我添加了带有容器 View 的中间人 View Controller 。然后我将您的分割 View 放置在该容器 View 中。最后,容器 View 的父 View 被设置为图层支持。这是图片:

enter image description here

之后我可以看到一切正常:

enter image description here

另外一点:确保在真正需要之前不要使用 1000 优先级的约束。我通常使用 750(我也修复了这个问题)。否则你会收到很多关于不满意的事情的警告。

这是您修复的项目: https://github.com/emankovski/splitviewroundcorrners

关于macos - NSSplitViewController 导致包含的 View 绘制在窗口角上,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36464339/

相关文章:

mysql - 使用 ARC 从 Objective-C 项目访问 MySQL 服务器

objective-c - 在 macOS 上获取 CPU 使用百分比

xcode - 混合 Objective-C/Swift 项目中 Storyboard颜色的问题

ios - 如何更好地识别UITextField

ios - 在 subview Controller 之间切换

bash - 如何让 GNU screen 识别 UTF-8 字符

c++ - 使用 C++ 在 Mac OS X 上编写 GUI 应用程序

macos - 如何在 OSX Yosemite 上以不区分大小写的方式比较文本

objective-c - 如何在 objective-c 中找到鼠标的位置

swift - 为什么我使用 UNUserNotificationCenter 创建的本地通知没有显示在屏幕的右上角?