问题标签 [intrinsic-content-size]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
1241 浏览

ios - iOS:UIScrollView 在底部留下空间,我怎样才能在顶部留出空间

我有滚动视图,其中子视图是从底部添加的,例如在墙上添加砖块(在我的情况下只有一块砖块),然后在其上添加下一块砖块,依此类推。与 default 一样UIScrollView ContentSize,滚动将发生在顶部。我怎样才能滚动到底部。如果我向下滚动,我应该能够看到其他的积木,它们一个接一个地添加。

正如您在下面的屏幕截图中看到的那样,开始按钮应该向下而不是向上。

非常感谢任何形式的帮助。

谢谢

示例代码:

编辑:我没有使用约束布局,我正在计算和设置框架。

第一个屏幕

第二屏

第三屏

在此处输入图像描述

0 投票
1 回答
8090 浏览

ios - systemLayoutSizeFitting 忽略布局约束并使用图像视图固有大小

我正在为UICollectionView. 我的单元格应该有固定的宽度和灵活的高度。

单元格由 aUImageView和 a组成UIStackView。的UIImageView约束如下:

堆栈视图类似,并且确实绑定到单元格的底部。

系统调用时preferredLayoutAttributesFitting(_ layoutAttributes: UICollectionViewLayoutAttributes) -> UICollectionViewLayoutAttributes {

我正在执行一些计算以获取单元格的高度。

事实证明,preferredSize 是使用 imageView 内在大小而不是尊重约束来计算的。因此,对于一个 850x850 的图像(以及一个宽度为 160 点的单元格),我得到的高度比我预期的要高得多,因此一个单元格的底部空间很大。

我设法用我觉得这是一个黑客的东西解决了这个问题。

我创建了对图像宽度约束的引用,当我使用从 layoutAttributes 获得的固定值调用此方法并调用 setNeedsLayout() 和 layoutIfNeeded() 时对其进行更新,这样就可以了。但我真的不喜欢我不得不再次强制布局并自己更新宽度,更不用说我失去了性能。

如何以更好的方式做到这一点?

非常感谢。

0 投票
2 回答
3201 浏览

ios - 多行 UILabel 与固有内容大小的 UILabel 宽度相同

我正在尝试使用自动布局对齐两个 UILabel,其中第一个标签没有设置宽度但使用固有内容大小,第二个标签应该与第一个标签的宽度相同,将文本换行到新行。

理想情况下,第二个标签应该将数字行设置为0与动态类型一起使用,但我2暂时将其设置为,甚至给它一个特定的高度。然而,当我尝试对齐equal widthstrailing时,内部内容大小标签会扩展到多行标签的宽度,就好像它都在一行上一样(见下图)。

我所追求的: 我想要的效果

我所看到的: 我得到的效果

有什么方法可以让我在不为第一个标签指定宽度的情况下实现我想要的效果?我希望它随着内容扩展以考虑动态类型,并且第二个标签具有相同的宽度并将所有文本换行到新行。

0 投票
1 回答
1290 浏览

ios - 如何为输入附件视图的高度设置动画?

在为输入附件视图的高度设置动画时,我遇到了奇怪的行为。我究竟做错了什么?

我创建了一个带有单个子视图的UIInputView子类 ( )。InputView的高度InputView和它的高度intrinsicContentSize由子视图控制。InputView为 50 像素高时isVisibletrue0 像素高时isVisible为假。

按下按钮时,主机视图控制器会isVisible在一秒钟的动画块中切换。

我希望输入附件视图在设置为时从屏幕底部平滑增长,并在设置isVisible为时true平滑收缩到屏幕按钮。取而代之的是,键盘背景覆盖层会立即以 50 像素的高度显示,并且输入附件视图从其框架的中心开始增长。isVisiblefalseisVisibletrue

紫色框不是从屏幕底部开始生长,被键盘覆盖背景包围

收缩时,输入附件视图会立即失去一些高度,然后才能平滑地继续动画。

我创建了一个显示此意外行为的输入附件视图演示项目。

0 投票
1 回答
752 浏览

ios - 自定义 UIView intrinsicContentSize 宽度得到非常大的值或零

我正在尝试为 Xcode 9.1 中的 UILabel 制作偏移背景。

我有一个@IBDesignable包含 UILabel 的 UIView 子类。我有下一个限制:

  1. label.centerX == self.centerX
  2. label.centerY == self.centerY
  3. 宽度:自我 == 1 x 标签 + 偏移量;(通常偏移 - 20)
  4. 高度:自我 == 多 x 标签 + 0;(通常多 - 1.3)

我也覆盖了intrinsicContentSize

现在有时,如果我调试代码并在我的覆盖intrinsicContentSize但主要在 Interface Builder 中的断点处停止,我会得到一些非常大的宽度值20,000,010或类似的值。它们非常随机但非常大。上次 Interface Builder 抱怨你只能制作 10,000x10,000 UIView。

大值截图

界面生成器投诉

在其他情况下,视图 intrinsicContentSize.width 为 0 并且为我的视图设置 intrinsicContentSize 占位符无济于事。

如果您转到其他 swift 文件并返回它可以更改。有时它显示正确的值,但在大多数情况下是虚假的。

最终的布局通常是我想要的,所以它可以在运行时工作,但我几乎不能在这个视图中使用 Interface Builder。

我还尝试使用空文本或一个字符文本(如“。”)初始化 UILabel。和 frame (0,0,1,1) 因为我认为可能零帧和 nil 文本提供了这种行为,但似乎也无济于事。

你有什么想法可以解决这个问题,以便我可以在 Interface Builder 中使用我的 OffsetLabel 吗?为什么会这样?

0 投票
2 回答
421 浏览

ios - addSubview 如何与intrinsicSizes 一起使用?

以下代码的结果是:我没有看到标签。

我的理解是标签的 intrinsicSize 将允许标签拉伸。为什么没有发生这种情况?

0 投票
1 回答
498 浏览

ios - 我应该使整个层次结构的内在内容大小无效吗?

假设我有以下启用自动布局的视图层次结构:

UIStackView |__ OuterCustomView (overridden intrinsic content size) |__ UILabel |__ InnerCustomView (overridden intrinsic content size) |__UILabel |__UILabel

里面的标签InnerCustomView有动态变化的文本和字体。每当发生更改时,我都会在实例上调用InvalidateIntrinsicContentSize()(Xamarin 语法) 。InnerCustomView

问题是 - 我是否还需要在包含上手动使其无效OuterCustomView,或者框架是否足够聪明,可以从那里获取所有内容并将所有内容重新布局到最顶层UIStackView

0 投票
0 回答
508 浏览

ios - 自定义 UIView 根据内容调整大小

我有一个 UITableview 需要根据图像的大小显示内容(图像和文本)。(全宽 - 根据纵横比的高度)

我已经定义了一个自定义单元格并在其中嵌入了 Customview。

自定义视图(它的图像视图被限制为适合自定义视图)。

CustomView 从 api 接收图像大小。我计算Customview所需的高度。

我尝试根据收到的图像大小设置 Customview 的 intrinsicContentSize 以及设置图像的高度约束。

但是容器的高度并没有反映在 UITableViewAutomaticDimension tableview 中。

但是,如果在单元格内设置 CustomView 的高度,它就可以工作。

什么是完成自定义视图的最佳方法,该视图向超级视图发出它需要显示的高度信号?

例如 - http://ioscake.com/proper-usage-of-intrinsiccontentsize-and-sizethatfits-on-uiview-subclass-with-autolayout.html

0 投票
2 回答
2854 浏览

css - 为什么具有 max-content 的 flex 容器的宽度与 flex 项的宽度不同?

我想了解为什么宽度指定为“ max-content ”的父 flex 容器的宽度与唯一不灵活的子 flex 项的宽度不同。

根据我对 Flexbox内在尺寸规范的理解,孩子有正确的宽度,但父母不尊重孩子的主要尺寸最大内容贡献。

这是 JSFiddle:https ://jsfiddle.net/c0f5xwn0/

有人可以解释这背后的原因吗?

0 投票
2 回答
617 浏览

ios - 从顶部而不是内在大小的中心进行动画处理

我试图让我的观点从上到下动画化。目前,在更改我的标签文本时,在 nil 和一些“错误消息”之间,标签从其固有大小的中心动画,但我希望常规“标签”是“静态的”并且只为错误标签设置动画。基本上错误标签应该位于常规标签的正下方,并且错误标签应该根据其(固有)高度展开。这本质上是一个复选框。我想在用户尚未选中复选框但正在尝试进一步处理时显示错误消息。该代码只是解释问题的基本实现。我已经尝试为 containerview 调整 anchorPoint 和 contentMode ,但这些似乎不像我想象的那样工作。抱歉,如果缩进很奇怪