在保持子视图锚定的同时调整 UIView 宽度
Posted
技术标签:
【中文标题】在保持子视图锚定的同时调整 UIView 宽度【英文标题】:Resizing UIView width while keeping subview anchored 【发布时间】:2014-11-09 18:52:17 【问题描述】:所以我想在前后实现这样的事情:
http://demosthenes.info/blog/819/A-Before-And-After-Image-Comparison-Slide-Control-in-html5
我目前有这个层次结构(按此顺序添加,我用 ID 标记了它们以便更容易理解):
UIView (1)
UIImageView (2)
UIView (3)
UIImageView (4)
现在*** UIView 附加了一个 UIPanGestureRecognizer。我的想法是在识别到平移手势时调整包含 UIImageView 的第二个 UIView (3) 的大小。换句话说,我将移动 UIView (3) 的 x 位置,从而隐藏包含 UIImageView (4) 以显示其后面的图像 (2) 从而达到预期的效果。它工作得相当好,因为它确实调整了大小,但包含的 UIImageView (4) 没有调整大小,而是随着调整大小的 UIView (3) 的 x 位置移动(锚定在 (0,0))或者它只是漂浮在一切之上。我尝试更改 UIView (3) 和 autoresizeMask/contentMode 的 autoresizeSubviews,但没有任何效果。
换句话说,如何在不移动或调整子视图大小的情况下调整容器的大小?
我做错了什么?不确定这种方法是否是最好的。如果您对更好的前后处理方式有任何建议,请分享!
【问题讨论】:
【参考方案1】:我会将您当前的结构更改为:
UI 视图 (1) UIImageView (2) UIImageView (3)为了达到你想要的效果,放置一个布局约束,它附加在 UIImageView (3) 的右侧。使用 UIPanGestureRecognizer 修改约束。 此外,将界面生成器中的 UIImageView (2) 和 UIImageView (3) 的视图模式设置为“左上角”。这应该够了吧。那就是您正在修改 UIImageView (3) 的大小以显示图像。
【讨论】:
但这会使图像粘在 UIImageView 的“左上”侧,并且在调整视图大小时会沿 X 移动? 如果将约束添加到 UIImageView 的右侧并修改约束的常量(即最初较高的值 = 缩小的图像视图)则不会以上是关于在保持子视图锚定的同时调整 UIView 宽度的主要内容,如果未能解决你的问题,请参考以下文章