我想创建一个视图,其中我喜欢动画,例如iOS 8 Weather app中的动画。 我试着解释一下我做了什么。如果有任何不正确的地方请指导我。
我想要实现的是,当我开始滚动时,第一个标签会顺利消失,第二个标签会转到屏幕顶部,而TableView会延伸显示更多内容。 当我滚动回到顶部时,我希望整个过程恢复。
这样做的最佳方式是什么?
答案 0 :(得分:6)
我最近为我正在创建的应用重新创建了iOS8 Weather应用程序的滚动效果。
完整的代码太长了,无法在此发布,但对于任何有兴趣的人,我都把它放在GitHub上。您可以下载并运行项目以查看其外观。欢迎对代码进行改进:
UIScrollView with masked content
它的工作原理如下:
您有一个滚动视图(屏幕大小),其中包含子视图(蒙版),而子视图又具有子视图(内容)。我们还在屏幕顶部添加了一个大标签(在Weather应用程序中,显示温度)。
然后使用scrollViewDidScroll
委托方法在用户滚动时将面具固定在屏幕上。您也可以使用此方法首先向上拉伸蒙版。
将遮罩修复到屏幕意味着遮罩的子视图(我们的内容)也变得固定。但我们希望它滚动,所以我们做的与我们对掩码所做的内容相反(再次,使用scrollViewDidScroll
)。
我们需要遮罩实际上作为遮罩使用,因此我们在遮罩上设置clipsToBounds = YES
。
最后,我们在滚动期间使用scrollview的偏移来移动和淡化屏幕顶部的大标签。
要让它与iOS8 Weather应用程序一样完全,我们还需要执行以下操作: