swift - NSCollectionViewFlowLayout collectionViewContentSize 更新但 Collection View 框架不更新

标签 swift cocoa nscollectionview nscollectionviewflowlayout

我有多个自定义 NSCollectionViewFlowLayouts,其中一些具有垂直方向,另一些具有水平方向。

设置水平布局时, Collection View 框架根据内容正确设置高度和宽度,但是当我将布局更新为垂直布局时,框架会保留以前的布局内容大小。

使用鼠标手动调整窗口大小会导致布局正确显示,但我不确定为什么这不能以编程方式正确更新。正确的大小是从布局内容大小中调用的,在 WWDC 的“NSCollectionViews 的新增功能”演示中,您可以看到这不是问题。

同样的问题可以在 Apple 2015 WWDC What's new with NSCollectionViews 示例项目中看到,位于https://developer.apple.com/library/prerelease/mac/samplecode/CocoaSlideCollection/CocoaSlideCollectionUsingNSCollectionViewonOSX10.11.zip

在环绕布局和圆形布局之间切换时,您最初会看到高度不正确,反之亦然。

我不确定这是否是一个错误,或者我在实现中是否遗漏了任何内容。

更新:这看起来是一个操作系统错误,目前我们必须采取解决措施。在此发帖,以便其他人可以看到 interium 解决方案,或者可能根据上面的描述向其他人提出建议。 (https://github.com/zenangst/Blueprints/pull/93)

最佳答案

更新:这看起来是一个操作系统错误,目前我们必须采取解决措施。在此发帖,以便其他人可以看到 interium 解决方案,或者可能根据上面的描述向其他人提出建议。 (https://github.com/zenangst/Blueprints/pull/93)

'This adds a "horrible" hack to get the content size to update on macOS when transitioning between layouts. It will temporarily resize the window to make sure that the scroll view's document view gets a new size.'

关于swift - NSCollectionViewFlowLayout collectionViewContentSize 更新但 Collection View 框架不更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54588712/

相关文章:

cocoa - 如何将 NSMenuItem 绑定(bind)到 NSArrayController

objective-c - Cocoa-在 NSCollectionView 中为 NSButton 使用representedObject

swift - NSCollectionView 内拖放示例

ios - Bonjour 服务发现找不到主机

swift - 使用需要泛型的方法扩展 Swift 类型

ios - 如何在同一个 View Controller 中使用多个搜索 Controller ?

objective-c - 了解 Cocoa Drawing 中的点和用户空间,因为它们与屏幕分辨率交互

cocoa - 在 NSCollectionView 中拖放

objective-c - 排序 NSCollectionViews 绑定(bind)数组 Controller -> 显式动画 NSCollectionViewItems 框架

swift - 隐式展开的乘法和除法