移动子视图时,如何在其超视图中将其子视图保留在同一位置?

时间:2013-05-31 16:06:19

标签: ios objective-c uiview uiimageview uigesturerecognizer

这是一个非常令人费解的头衔。遗憾。

基本上,我有UIView我已经附加到UITableViewCell所以我可以滑动细胞,或者至少创造它的幻觉。在UIView内,我有一个UIImageView。我希望相对于视图控制器保持此UIImageView静态。所以基本上当我滑动单元格时,我希望用手指滑动单元格的所有内容(我已完成)除UIImageView之外。我想让用户觉得它似乎停留在一个地方 - 这意味着单元的超级视图(视图控制器的视图)它停留在一个地方。

构建此内容的最简单方法是什么?对不起,我没有代码要分享,我只想先从概念层面构建这个代码。我UIView上的UITableViewCell滑动了UIPanGestureRecognizer并移动了UIView的框架,如果有帮助的话。

当它移动时我是否必须在UIView的相反方向移动它(比如它在x中向前移动一个,在x中向后移动一个?)或者是否有一种我可以说的方式“锁定相对于超级超级视图的位置”?

2 个答案:

答案 0 :(得分:2)

之前我遇到了同样的问题..我所做的只是不将UIImageView作为子视图添加到UITableViewCell,而是将其附加到{{1}的父级} ..那样UITableViewCell框架属性(即大小或原点)发生的任何事情都不会影响你的UITableViewCell ..

您可能想知道:我将UIImageView作为子视图附加到tableCell的原因之一是b / c它以多种不同的方式与它相关。对此的响应是您可以通过以下方式将对象与另一个对象关联起来UIImageView

如果您来自网络开发背景,您可以将此讨论视为objc_setAssociatedObjectposition:absolute讨论之间的区别。

最初我尝试做你想到的事情,基本上是朝着相反的方向移动它们。我只是认为我的解决方案要简单得多。

答案 1 :(得分:2)

abood很接近,但很接近,但是如果你只是让imageview成为单元格本身的子视图而不是我在单元格上添加的UIView,它们就会独立运行。因此,与第一行相反,将其添加为UITableViewCell的子视图非常有效,并且没有列出任何问题。现在工作得很好。