标准天气应用:查看具有相同行为的层次结构

时间:2016-07-11 12:59:03

标签: ios objective-c iphone swift uitableview

我试图理解,如何在标准天气iPhone应用程序中实现相同的垂直滚动行为(所有水平行为看起来很明显)。我已经看到了this个问题,但这还不够。目标是使用UIScrollView和/或UITableView构建视图层次结构,可能没有太多自定义动画。我为三种不同的状态制作了截图:

初始状态:

enter image description here

“刷新”状态(拖动):

enter image description here

详情状态(滚动):

enter image description here

我已经拥有的想法:将屏幕分为红色,黄色,绿色和蓝色模块看起来不错。

1)绿色+蓝色区域(和黄色?)非常接近UITableView,绿色模块作为标题视图,但有一个不标准的东西 - 我们可以将绿色模块移到顶部,跳过“刷新”区域。

2)即使在红色区域的顶部,我们也可以与蓝色/绿色模块进行交互,上下移动它们,因此,inset的{​​{1}}可能是UITableView个自定义动画{{1}在UIView下?

1 个答案:

答案 0 :(得分:1)

我们无法真正了解最新情况,因为它是苹果公司的消息来源。然而,没有很多选项可用于设计天气应用程序具有的逻辑类型,因此我们可以假设他们的过程涉及与此类似的步骤。

*您将编写大量布局和动画代码,以便以不同的速度,自定义布局和其他精细细节移动视图。

  • 首先,您很可能需要将UICollectionViewLayout子类化为 多向滚动 并创建自定义布局。子类化将允许完全控制集合的设计。如果您可以设计不那么复杂的东西,那么您可以使用UICollectionViewFlowLayout以最少的开发来设计基于集合的布局。

Collection View Programming Guide for iOS - Creating Custom Layouts

可行的发展大纲

  1. 构建自定义布局

    • 填充CollectionView
    • 用于管理插座连接的子类UICollectionViewCell
  2. 构建自定义布局以保存动态数据

    • 创建一个CustomCollectionViewLayout并让它子类UICollectionViewLayout为collectionView提供有关单元格的信息。此布局仅为集合视图提供要向用户显示的信息。这意味着它不会成为您的UI的一部分。
  3. UICollectionViewLayout

    UICollectionViewLayout Class Reference

    每个布局对象都应该实现以下方法以符合协议:

    collectionViewContentSize layoutAttributesForElementsInRect layoutAttributesForItemAtIndexPath shouldInvalidateLayoutForBoundsChange