- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我有一个包含大量文本的标签。有一个用于折叠和展开标签高度的切换开关(此处名为 “lire la suite”),因此它会截断文本的末尾。
我精心设置了垂直内容拥抱优先级和压缩阻力,因此固有尺寸比压缩阻力具有更高的优先级。
高度约束(直接位于标签右侧的可选约束) 设置为常数71
,即4 行的高度。它永远不会改变。
然后这个相同的约束在 747
和 749
之间进行优先级切换,所以会发生以下情况:
高度约束优先级 = 749
:
compression resistance < constraint priority < hugging priority
Compression resistance collapses under the constraint priority, its height is
71
or less if its intrinsic size (hugging priority) is smaller.
高度约束优先级 = 747
:
constraint priority < compression resistance < hugging priority
The greater compression resistance forces the height to follow its intrinsic size.
这非常有效。我的问题是我不知道如何为这个约束设置动画,因为每个解决方案都会为 constant
属性而不是 priority
设置动画。
我想知道是否有解决方案或解决方法。
最佳答案
通过试验,您似乎无法使用优先级为约束设置动画,并且您要么激活/停用约束,要么更改它们的常量。
几天前我有过类似的任务。一种简单但有点幼稚的方法是放弃约束并仅使用固有内容大小 - 您可以在应该折叠时设置 label.numberOfLines = 4
(因此大小不会扩展超过 4行)和 label.numberOfLines = 0
展开时。这非常简单和干净,但是,我不确定动画效果如何。
第二种方法是仅使用约束并为常量设置动画。您已经有 4 行的高度,您只需要展开标签的高度。您可以在 UILabel
上使用以下扩展来计算高度:
extension UILabel {
func heightNeeded() -> CGFloat {
self.layoutIfNeeded()
let myText = self.text! as NSString
let boundingRectangle = CGSize(width: self.bounds.width, height: CGFloat.greatestFiniteMagnitude)
let labelSize = myText.boundingRect(with: boundingRectangle,
options: .usesLineFragmentOrigin,
attributes: [NSAttributedStringKey.font: self.font],
context: nil)
return labelSize.height
}
}
那么你需要制作动画的是:
labelHeightConstraint.constant = label.heightNeeded()
不要忘记如何使用自动布局为该常量设置动画,例如参见我的 following answer到另一个 SO 问题。
关于ios - 通过更改其优先级值来动 Canvas 局约束,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48061675/
我想在按下按钮时在屏幕上显示透明的布局。 我尝试过使用Stack,它工作正常,但是当我按下函数内部的按钮(例如ExercisePage())时,覆盖图不显示。 当值overlayShouldBeVis
假设我有一个 html table其中单元格包含 span秒。某些操作会导致 div span s改变他们的位置,比如我重构表格转置。 考虑 1 2 3
我正在尝试在 RelativeLayout 上使用 Scale Animation。我想从左角到右角缩放图像,即从下到上对角线(从左到右)。我使用了以下代码行,但没有得到预期的结果。谁能用简单的话向我
我有两个 RelativeLayouts,每个包含一个 TextView。 基本上,顶部布局 用作“按钮”。当点击时,另一个布局将播放它的动画(向下扩展)。 在这种情况下,我应该向哪个layout 添
我只是想知道 JavaFx 中是否有任何简单的动 Canvas 局方法,例如 VBox 和 HBox。我希望我的应用程序在指定时间后更改 VBox 的背景颜色。但我意识到没有任何类似于 FillTra
简而言之,我想缩放 View - 就像 Android Market 一样,当您单击“更多”按钮时,例如在“描述”上。 我发现,Android Market 具有以下结构的布局: > 64d
要求 我可以根据 toYDelta="100% 或 toYDelta="50% 等转换布局 但我只想在 300dp 高度 中设置动 Canvas 局。 slide_down.xml slide_up
我是一名优秀的程序员,十分优秀!