【发布时间】:2016-11-25 01:06:23
【问题描述】:
是否可以在滚动时使单个UITableViewCell 在屏幕上保持可见(例如,当您向下滚动时,单元格应始终在屏幕顶部保持可见)。我含蓄地问我是否可以使用单元格执行此操作,所以不要费心建议我应该使用表格视图页眉或页脚,因为我在这个网站上被告知不可能在页脚或页眉视图中为视图设置动画,我真的需要在表格视图中为子视图设置动画的能力(显然只能在单元格中完成)。
换个说法:当您向上或向下滚动时,是否可以以任何方式保持表格视图中的单元格始终可见?如果没有,是否有一个“技巧”来为页脚或页眉内的视图设置动画?因为就像我说的那样,我被告知没有“合法”的方式可以做到这一点。
如果这是错误的,请纠正我。谢谢!
更新:
在我之前制作的一些 cmets 上纠正自己:似乎可以在页脚视图中为子视图设置动画,但它与在表格视图中为单元格设置动画的方式不同,所以如果有人知道如何在里面提交动画页脚视图,请随时提出一些建议。调用表格视图的reloadData() 方法对表格视图单元格有效,但页脚视图完全忽略UIView.animate(withDuration:) 并立即显示布局更改而不对其进行动画处理。
更新:
if self.didTapOnButton == true {
self.view.layoutIfNeeded()
UIView.animate(withDuration: 0.3, animations: {
bubbleView.backgroundColor = UIColor(red: 255/255, green: 225/255, blue: 68/255, alpha: 1)
containerViewTrailingConstraint.constant = 5
iconImageViewTrailingConstraint.constant = 5
bubbleViewEqualWidthConstraint.constant = 0
self.view.layoutIfNeeded()
}, completion: { (done:Bool) in
UIView.animate(withDuration: 0.2, animations: {
textView.alpha = 1
doneButton.alpha = 1
}, completion: { (done:Bool) in
textView.becomeFirstResponder()
})
})
self.didTapOnButton = false
}
触发动画的代码。当点击按钮时self.didTapOnButton 设置为true,然后立即重新加载表格视图,因此此代码执行一次(注意self.didTapOnButton 在动画完成后重新设置为false)。不过,问题似乎不太可能出现在这段代码中,因为当单元格仍在表格视图中而不是表格视图的页脚时,它可以完美运行。
【问题讨论】:
-
您的意思是说“表格视图 section 标题”吗?我问是因为它们是具有内置所需粘性功能的视图(也因为我很确定可以在表格视图标题内设置动画)。你有一个链接到你读到的那是不可能的吗?
-
是的,我就是这个意思。找不到链接,很久以前的,所以可能被删除了,它是用不同的帐户。更具体地说,我想在 FOOTER 部分而不是标题内设置动画。你知道怎么做吗?调用
reloadData()可以使单元格动画,但页脚不能。在动画块中的页脚更改会立即发生而无需动画。 -
我刚刚添加了一个包含动画 CALayer 的测试 UIView 子类,它运行良好。你想实现什么样的动画?
-
@Paulw11 我有一个限制在单元格内容视图的所有四个边缘的视图(顺便说一下,我使用
UITableViewCell作为页脚视图,因为我已经将此单元格设置为最初我的表格视图的底部单元格)。当视图加载时,视图的前导约束常量设置为 250,因此视图看起来像屏幕右侧的一个小方块。在动画块中(当点击按钮时),常量设置为 0,因此正方形应该再次“扩展”到屏幕的全宽(就像我最初在情节提要中设置的那样)。你能想象一下它的样子吗? -
是的。你能展示你的动画块吗?什么触发了动画(即按钮在哪里?)
标签: ios swift uitableview