UIViewControler
包含一个UIScrollView
,其中包含三个不同的页面。在启动时,将显示中心页面以及代表两列内容的其他几个视图。这些内容视图是ScrollView的子视图,可以在不同页面之间自由移动。
如果用户滚动到左侧页面,则某些内容视图(样机中的绿色视图)也应移动到该页面(动画),而其他在进入之前不可见的视图(例如绿色圆圈)在底部)。动画/移动的进度应由滚动位置/进度控制。
如果用户回滚到中心,则一切将如开始时所示。向右滚动时,其他视图(红色)移至右侧页面(动画),其他视图变为可见。
如何解决?
当然可以使用scrollViewDidScroll:
来检测ScrollView的更改,计算偏移量并通过更新其约束来移动视图。 但这绝对是一场噩梦。
视图不是线性移动,而是在那儿彼此改变相对位置,等等。通过更改某些约束常量这样做是行不通的吗?
那么如何实现这样的视图移动以及如何对其进行动画处理?
如果我可以为起始位置定义一个布局/约束集,为左页面定义一个布局,为右页面定义一个布局,那么这将是完美的选择,而iOS SDK可以使这些布局之间的过渡动画化。
这可以通过在UIView
动画块内的不同约束集之间进行切换来完成,但是例如,这仅允许从“布局中心”到“左布局”完全进行动画处理。但是在这种情况下,动画应由滚动控制:如果将左侧页面滚动50%到其最终位置,则内容视图的中心布局和左侧布局也应为50%。
这有可能吗?
编辑:
最后一个图像的中心视图中的红色框不应在那里。框移到了右页。