【问题标题】:How to resize NSCollectionView based on its largest child's size?如何根据其最大孩子的大小调整 NSCollectionView 的大小?
【发布时间】:2015-03-26 22:48:11
【问题描述】:

我正在尝试在 NSPopover 中显示 NSCollectionView,如下所示:

问题是我无法调整 NSCollectionView/NSPopover 的大小以适应 NSCollectionViewItem 的内容。标签中的文本要么像上面那样被压缩,要么与按钮重叠。

免责声明:我是 xcode/cocoa 域的新手。

【问题讨论】:

  • 如何设置当前的 NSPopover 大小?
  • 我没有,我猜自动布局设置了什么?无论如何让它动态化还是我必须在知道要显示的内容后以编程方式设置它?
  • 如果是通过自动布局设置的,只需正确设置约束即可。你有吗?
  • 好的,我没有对弹出框应用任何约束,如何应用约束使其水平扩展?

标签: xcode macos cocoa swift autolayout


【解决方案1】:

看起来,您只需要对您的 NSCollectionViewItem-child 类应用适当的约束。

+--------------------------+ 
|      |           |       |
|      5           5       |
|      |           |       |
|-5-[label]-10-[button]-10-|
|               <-40->     |
+--------------------------+

由于标签使用默认的固有尺寸,它的目标是尽可能宽,因为它的内容需要。

但要注意标签太宽。在这种情况下,您的 NSPopover 也会很宽。应用关系属性为“

【讨论】:

  • 这些是我之前对collectionViewItem的views设置的约束:i.imgur.com/HLdslsK.png你能指出哪一部分不正确吗?
  • 不幸的是,您的图片不够查找。查看编辑后的答案。
  • 所以我几乎像你提到的那样设置了约束,将标签捕捉到超级视图的左边缘,按钮到右边缘,固定宽度到按钮和标签和按钮之间的约束。如果我在自动布局中增加集合视图的宽度,它似乎会在运行时反映出来。
  • 我也在做 var minSize = NSMakeSize(0, 20); collectionView.maxItemSize = minSize;同时更新集合视图。
猜你喜欢
  • 2018-01-25
  • 1970-01-01
  • 2015-03-27
  • 2014-12-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多