ios - 标准天气应用 : view hierarchy with same behavior

标签 ios objective-c iphone swift uitableview

<分区>

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


初始状态:

enter image description here


“刷新”状态(拖动):

enter image description here


详细状态(滚动):

enter image description here

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

1) 绿色 + 蓝色区域(和黄色?)非常接近 UITableView,其中绿色模块作为标题 View ,但有一点不标准——我们可以将绿色模块移动到顶部,跳过“刷新”区域。

2) 即使在红色区域的最顶部,我们也可以与蓝色/绿色模块交互,上下移动它们,因此,这个区域可能是 UITableViewinsetUITableView 下使用自定义动画 UIView

最佳答案

我们无法真正了解发生了什么,因为它是 Apple 的源代码。然而,没有太多选项可用于设计天气应用程序所具有的逻辑类型,因此我们可以假设他们的流程涉及与这些类似的步骤。

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

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

Collection View Programming Guide for iOS - Creating Custom Layouts

可行性发展纲要

  1. 构建自定义布局

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

    • 创建一个 CustomCollectionViewLayout 并让它成为 UICollectionViewLayout 的子类,以便为 collectionView 提供有关单元格的信息。此布局仅向 Collection View 提供要显示给用户的信息。这意味着它不会成为您的用户界面的一部分。

UICollectionViewLayout

UICollectionViewLayout Class Reference

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

collectionViewContentSize layoutAttributesForElementsInRect layoutAttributesForItemAtIndexPath shouldInvalidateLayoutForBoundsChange

关于ios - 标准天气应用 : view hierarchy with same behavior,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38307608/

相关文章:

ios - 当 subview 添加到边界之外时动态调整父 View 的大小

ios - 按住自定义 UIButton 时更改深灰色突出显示的颜色?

ios - swift UIApplication.setStatusBarStyle 不起作用

objective-c - xcode objective-c - 避免使用相同名称的多个方法(使用 'setEnabled' )

iphone - 异步 NSURLConnection 抛出 EXC_BAD_ACCESS

ios - 如何删除 UNNotificationContentExtension 显示的 View

ios - 如何让UIToolbar的背景透明?

objective-c - NSWindow 可恢复并不总是有效

c# - MonoTouch 通用 iPhone/iPad 应用程序和代码复制

iphone - 如果用自定义子类替换默认 View ,则 cornerRadius 不起作用