调整 UITableViewCell 的 contentView 大小时对 UILabel 的过渡效果

Posted

技术标签:

【中文标题】调整 UITableViewCell 的 contentView 大小时对 UILabel 的过渡效果【英文标题】:Transition effect on UILabel when resizing UITableViewCell's contentView 【发布时间】:2012-10-17 21:05:27 【问题描述】:

在 iPhone 上的 mail.app 中,每封电子邮件的摘要显示在 UITableView 中。当用户在一行上滑动时,标签会调整大小以适应删除按钮,并且文本会重新换行(在更小的空间内,换行符可以移动)。

我已经弄清楚如何更新标签的宽度,以便文本重新换行。但是你也会注意到,Apple 在标签文本重新对齐时使用了一个简洁的淡入淡出动画。我怎样才能实现类似的目标?

我试图操纵 willTransitionToStatedidTransitionToState 中标签的 alpha 值,但我无法让它发挥作用。

【问题讨论】:

所以你有一个动画块的大小变化?它不是 alpha 的东西,因为只有正在移动的文本才会交叉淡入淡出。编辑:澄清一下,我的意思不是对整个标签上的 alpha 进行操作。 他们可能正在检查文本是否会被重新包装。 【参考方案1】:

我检查了 ios 5 的行为,以确保 iOS 6 中添加的对 NSAttributedString 的支持没有启用它,但它似乎没有启用。既然是这样,我看到了几种重新创建它的方法。我做过类似的事情,但不完全是这样,所以请谨慎对待(但我几乎可以肯定它会产生完全相同的效果)。

您可以尝试以下...

给 UILabel 添加一个遮罩层。遮罩层应该让一切都通过。 (所以我相信 blackColor 将作为背景颜色)。将子图层添加到蒙版图层。该子层将成为效果的驱动程序。它会将其背景颜色从黑色渐变为白色(使其下方的内容淡出)。您希望子图层蒙版应用于正在消失的标签区域。您可以将框架固定到该区域,它应该可以解决。如果您需要一些示例代码,请告诉我。

编辑:

你看过这个帖子吗?这可能有助于使其隐式工作。 animate textlabel in uitableviewcell using willTransitionToState

【讨论】:

以上是关于调整 UITableViewCell 的 contentView 大小时对 UILabel 的过渡效果的主要内容,如果未能解决你的问题,请参考以下文章

iOS - UITableViewCell 图像调整/调整大小

调整 UITableViewCell 高度

根据内容自动调整 UITableViewCell 高度

如何让 UITableView 行高自动调整为 UITableViewCell 的大小?

调整 UITableViewCell 大小的 NSLayoutConstraint 错误

如何让 UITableViewCell 调整高度以适应其内容?