【发布时间】:2016-10-20 20:46:56
【问题描述】:
我正在使用 (macOS) 今日列表小部件,并且我正在使用自动布局来调整小部件的大小。该小部件包含一个自定义 NSView,呈现一些预先格式化的文本(很像 HTML pre 标记)。
根据正在呈现的文本,小部件具有固有的内容大小。如果设置的框架大于或小于固有尺寸,它也会正确缩放(向下或向上)并居中。
这通常在许多情况下都能很好地工作,除了一种。当显示为 Today 小部件时,小部件的宽度被限制为特定大小。即使内在尺寸大于可用宽度也很好,它会按比例缩小。 然而似乎自动布局似乎仍然按原样使用小部件的固有高度,尽管宽度受到限制。这样我的视图就会出现在高度上,如下所示:
/------------------\
| extra pad |
|------------------|
| |
| downsized view |
| |
|------------------|
| extra pad |
\------------------/
示例:呈现的视图的固有尺寸为 800x400,当前视图的宽度为 400。视图被适当地缩小到 400x200,但布局高度似乎仍然是原始的 400(顶部和底部填充 200)。
问题:我如何告诉自动布局将缩放考虑在内。这听起来像是需要 -intrinsicSizeForMaxSize: 之类的东西。
我尝试设置宽度/高度比约束,降低抗压性并提高拥抱优先级,但这并没有消除额外的填充。我想我遗漏了一些关于自动布局在溢出时如何考虑内在大小的内容。
【问题讨论】:
标签: macos cocoa today-extension autolayout