移动子视图时,如何将其子视图保留在其父视图中的同一位置?
Posted
技术标签:
【中文标题】移动子视图时,如何将其子视图保留在其父视图中的同一位置?【英文标题】:When moving a subview around, how do I keep a subview of it in the same place in its superview? 【发布时间】:2013-05-31 16:06:19 【问题描述】:这是一个非常复杂的标题。对不起。
基本上,我有一个UIView
,我已将它附加到UITableViewCell
,这样我就可以四处滑动单元格,或者至少创建它的tric--幻觉。在那个UIView
中,我有一个UIImageView
。我想保持这个UIImageView
相对于视图控制器的静态。所以基本上当我滑动单元格时,我希望单元格的所有内容都可以用我的手指滑动(我已经完成了)除了UIImageView
。我希望它在用户看来好像它停留在一个地方 - 这意味着对于单元格的超级视图(视图控制器的视图)它停留在一个地方。
构建这个最简单的方法是什么?很抱歉我没有要分享的代码,我只是想先从概念层面构建它。我在UITableViewCell
上的UIView
用UIPanGestureRecognizer
滑动,如果有帮助,可以移动UIView
的框架。
当它移动时,我是否必须将它向与UIView
的相反方向移动(比如它在 x 中向前移动一个,在 x 中向后移动它?)或者有什么方法可以让我说“锁定您相对于您的超级视图的位置”?
【问题讨论】:
你需要向相反的方向移动它。应该没那么难,因为您已经实现了 UIPanGestureRecognizer。 我下面的回答对你有用吗?请让我知道,您还使用什么库来实现此滑块功能?还是你自己做的? 【参考方案1】:我以前也遇到过同样的问题.. 我所做的只是不将UIImageView
作为子视图添加到UITableViewCell
,而是将其附加到UITableViewCell
的父级.. 无论如何发生在UITableViewCell
框架属性(即大小或原点)不会影响您的UIImageView
..
您可能想知道:我将 UIImageView 作为子视图附加到 tableCell 的原因之一是 b/c 它以许多不同的方式与之相关。对此的回应是您可以通过objc_setAssociatedObject
如果你有网络开发背景,你可以把这个讨论看作是position:absolute
和position:relative
讨论的区别。
最初我尝试按照您的想法进行操作,基本上将它们朝相反的方向移动等。我只是认为我的解决方案要简单得多。
【讨论】:
这听起来不错,但是作为一个table view cell,你不还是想让图片随着table的滚动而上下移动吗?也许您可以让手势识别器移动 contentView 并且图像是表格视图单元格(contentView 的姐妹)的直接子级。 @morningstar 确定你是对的.. 我不确定确切的安排(我必须测试一下我会将 UIImageView 附加到哪个视图),但我的想法是以某种方式将 UIImage 视图与 UITableView 解耦..【参考方案2】:abood 很接近,但是很接近,但是如果您只是将 imageview 设置为单元格本身的子视图,而不是我在单元格上添加的 UIView,它们会独立运行。因此,与第一行相反,将其添加为 UITableViewCell 的子视图效果很好,并且没有列出任何问题。现在完美运行。
【讨论】:
天啊!如果我很接近,那么至少给我一个赞成票!大声笑以上是关于移动子视图时,如何将其子视图保留在其父视图中的同一位置?的主要内容,如果未能解决你的问题,请参考以下文章