仿淘宝物流界面

大厂样例

1 淘宝物流界面

2 滴滴

3 本身写的

起源

淘宝对于我来讲,已经很久没有去过这个物流的界面了,由于我根本就不关心。在我印象里面,这个界面仍是那种根据接口返回的物流信息作界面展现。
那天,有一个朋友忽然问我:“你知道淘宝的那个物流界面是怎么作的吗?” 看了以后我以为挺神奇的。 我觉得上面的地图是作tableView的headerView。我朋友告诉我不是。多是由于以为回答的不是很好,我就敷衍的说:"大家有这个需求了啊?"是他同事作的项目有这个需求。以后这个事情就不了了之了.......
大概是三天后吧,他和我说,那个界面快作出来了,那个同事在google上找到了这么一个demo,而后我就结果来看了一下。基本上差很少。而后我就开始写了这么一个小样例。
目的并非炫耀什么,我估计不少人也都会,因此但愿,不喜勿喷.......git

The key of problem

我在看过那个demo以后,关键的就是判断点击的是那个视图。- (UIView *)hitTest:(CGPoint)point withEvent:(UIEvent *)event;github

相关知识连接

  1. iOS 知识小集第 15 期 · 掘金首发
  2. 对UIView的hitTest: withEvent: 方法的理解
  3. 点击事件处理, 以及hitTest:withEvent:实现

行动起来

个人那个demo的结构也是很简单的。
首先,咱们作了一个一整个屏幕大小的MapView; 而后,添加一个tableView,也是整个屏幕的大小,而后对contentInset作了这设置;
这样界面的布局就完事儿了。
接下来就是实现那个方法的问题了,我自定义了一个tableView,而后在那里面实现了这个方法bash

- (UIView *)hitTest:(CGPoint)point withEvent:(UIEvent *)event {
    id hitView = [super hitTest:point withEvent:event];
    if (point.y<0) {
        return nil;
    }
    return hitView;
}
复制代码

这样 地图和tableView的滑动问题就都解决了布局

依旧有个不解之谜,求大神指点

淘宝那个地图路线那个,始终都会在上面显示出来,而个人这个demo现实的一直都是在整个mapview的中心,并且滑动的时候,也能够跟随华东的偏移量作相应的调整,有大神知道的欢迎来知道小弟。post

传送门

Demoui