问题标签 [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.
ios - systemLayoutSizeFitting 忽略布局约束并使用图像视图固有大小
我正在为UICollectionView
. 我的单元格应该有固定的宽度和灵活的高度。
单元格由 aUImageView
和 a组成UIStackView
。的UIImageView
约束如下:
堆栈视图类似,并且确实绑定到单元格的底部。
系统调用时preferredLayoutAttributesFitting(_ layoutAttributes: UICollectionViewLayoutAttributes) -> UICollectionViewLayoutAttributes {
我正在执行一些计算以获取单元格的高度。
事实证明,preferredSize 是使用 imageView 内在大小而不是尊重约束来计算的。因此,对于一个 850x850 的图像(以及一个宽度为 160 点的单元格),我得到的高度比我预期的要高得多,因此一个单元格的底部空间很大。
我设法用我觉得这是一个黑客的东西解决了这个问题。
我创建了对图像宽度约束的引用,当我使用从 layoutAttributes 获得的固定值调用此方法并调用 setNeedsLayout() 和 layoutIfNeeded() 时对其进行更新,这样就可以了。但我真的不喜欢我不得不再次强制布局并自己更新宽度,更不用说我失去了性能。
如何以更好的方式做到这一点?
非常感谢。
ios - 如何为输入附件视图的高度设置动画?
在为输入附件视图的高度设置动画时,我遇到了奇怪的行为。我究竟做错了什么?
我创建了一个带有单个子视图的UIInputView
子类 ( )。InputView
的高度InputView
和它的高度intrinsicContentSize
由子视图控制。InputView
为 50 像素高时isVisible
为true
0 像素高时isVisible
为假。
按下按钮时,主机视图控制器会isVisible
在一秒钟的动画块中切换。
我希望输入附件视图在设置为时从屏幕底部平滑增长,并在设置isVisible
为时true
平滑收缩到屏幕按钮。取而代之的是,键盘背景覆盖层会立即以 50 像素的高度显示,并且输入附件视图从其框架的中心开始增长。isVisible
false
isVisible
true
收缩时,输入附件视图会立即失去一些高度,然后才能平滑地继续动画。
我创建了一个显示此意外行为的输入附件视图演示项目。
ios - 自定义 UIView intrinsicContentSize 宽度得到非常大的值或零
我正在尝试为 Xcode 9.1 中的 UILabel 制作偏移背景。
我有一个@IBDesignable
包含 UILabel 的 UIView 子类。我有下一个限制:
- label.centerX == self.centerX
- label.centerY == self.centerY
- 宽度:自我 == 1 x 标签 + 偏移量;(通常偏移 - 20)
- 高度:自我 == 多 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 吗?为什么会这样?
ios - addSubview 如何与intrinsicSizes 一起使用?
以下代码的结果是:我没有看到标签。
我的理解是标签的 intrinsicSize 将允许标签拉伸。为什么没有发生这种情况?
ios - 我应该使整个层次结构的内在内容大小无效吗?
假设我有以下启用自动布局的视图层次结构:
UIStackView
|__ OuterCustomView (overridden intrinsic content size)
|__ UILabel
|__ InnerCustomView (overridden intrinsic content size)
|__UILabel
|__UILabel
里面的标签InnerCustomView
有动态变化的文本和字体。每当发生更改时,我都会在实例上调用InvalidateIntrinsicContentSize()
(Xamarin 语法) 。InnerCustomView
问题是 - 我是否还需要在包含上手动使其无效OuterCustomView
,或者框架是否足够聪明,可以从那里获取所有内容并将所有内容重新布局到最顶层UIStackView
?
ios - 自定义 UIView 根据内容调整大小
我有一个 UITableview 需要根据图像的大小显示内容(图像和文本)。(全宽 - 根据纵横比的高度)
我已经定义了一个自定义单元格并在其中嵌入了 Customview。
自定义视图(它的图像视图被限制为适合自定义视图)。
CustomView 从 api 接收图像大小。我计算Customview所需的高度。
我尝试根据收到的图像大小设置 Customview 的 intrinsicContentSize 以及设置图像的高度约束。
但是容器的高度并没有反映在 UITableViewAutomaticDimension tableview 中。
但是,如果在单元格内设置 CustomView 的高度,它就可以工作。
什么是完成自定义视图的最佳方法,该视图向超级视图发出它需要显示的高度信号?
css - 为什么具有 max-content 的 flex 容器的宽度与 flex 项的宽度不同?
我想了解为什么宽度指定为“ max-content ”的父 flex 容器的宽度与唯一不灵活的子 flex 项的宽度不同。
根据我对 Flexbox内在尺寸规范的理解,孩子有正确的宽度,但父母不尊重孩子的主要尺寸最大内容贡献。
这是 JSFiddle:https ://jsfiddle.net/c0f5xwn0/
有人可以解释这背后的原因吗?
ios - 从顶部而不是内在大小的中心进行动画处理
我试图让我的观点从上到下动画化。目前,在更改我的标签文本时,在 nil 和一些“错误消息”之间,标签从其固有大小的中心动画,但我希望常规“标签”是“静态的”并且只为错误标签设置动画。基本上错误标签应该位于常规标签的正下方,并且错误标签应该根据其(固有)高度展开。这本质上是一个复选框。我想在用户尚未选中复选框但正在尝试进一步处理时显示错误消息。该代码只是解释问题的基本实现。我已经尝试为 containerview 调整 anchorPoint 和 contentMode ,但这些似乎不像我想象的那样工作。抱歉,如果缩进很奇怪