如何创建Airbnb iOS App Explore标签?

时间:2017-03-20 09:23:18

标签: ios swift uitableview uiscrollview

airbnb full airbnb full

我尝试创建一个类似于Airbnb应用截图的Feed页面。我开始使用UITableViewController并在滚动标题中添加动画;标题是那里的绿松石色区域。

现在我要添加这些页面标签(" For You"," Homes"," Experiences"和" Places")并混淆了我应该如何构建我的观点。仅供参考,每个标签均为tableView。现在我没有页面标签的结构是:

  1. UITabBarController
  2. UIViewController(包含UIView标题,UITableView内容)
  3. 我能想到的选择很少:

    1. 每个页面标签都是UITableViewDataSource,因此点击标签只是对dataSourcereloadData()
    2. 的更改
    3. UIViewController将包含UIScrollView contentView,因此点击标签为addSubView至contentView,addChildViewController至控制器
    4. 根据我的研究,不建议使用选项#2,因为它将tableView放在scrollView中。但是选项#1要求所有tableView具有相同的cellID才能出列?听起来很硬。请告诉我这个场景的最佳实践!感谢。

1 个答案:

答案 0 :(得分:1)

如果您描述,可能应该考虑使用容器视图。通过这种方式,您可以为您描述的每个案例分别创建视图。

你的例子:

在故事板中

enter image description here

听到的是切换视图的代码。

class ViewController: UIViewController {
    @IBOutlet weak var containerViewA: UIView!
    @IBOutlet weak var containerViewB: UIView!

    override func viewDidLoad() {
        super.viewDidLoad()
    }

    @IBAction func showComponent(_ sender: UISegmentedControl) {
        if sender.selectedSegmentIndex == 0 {
            UIView.animate(withDuration: 0.5, animations: {
                self.containerViewA.alpha = 1
                self.containerViewB.alpha = 0
            })
        } else {
            UIView.animate(withDuration: 0.5, animations: {
                self.containerViewA.alpha = 0
                self.containerViewB.alpha = 1
            })
        }
    }
}