【问题标题】:UITableView floating view like iPhone Maps appUITableView 浮动视图,如 iPhone 地图应用程序
【发布时间】:2013-01-11 07:41:08
【问题描述】:

在 iOS 6 地图应用程序中,当查看某个位置的详细信息时,有一个类似于 UISegmentedControl 的控件。它有 3 个“标签”:“信息”、“评论”和“照片”。

当图片可见时,此控件会上下滚动,但会锚定到屏幕顶部并在向下滚动时浮动。这些图片可能有助于澄清我要说明的内容:

关于如何在我自己的 UITableView 上创建此行为的任何提示? tableview 需要是Grouped 样式,而且我需要有多个section,所以使用Section Header View 是不可能的。

【问题讨论】:

    标签: objective-c cocoa-touch


    【解决方案1】:

    利用UITableView's tableHeaderView 属性添加您的分段控件。

    MapViewTableView 应该是兄弟,并作为子视图添加到滚动视图。

    tableView.frame.size.height 应该是你在 image2 中看到的(parentViewHeight-navBarHeight)

    scrollView.frame.size.height = tableView.frame.size.height
    
    scrollView.contentSize.height = tableView.frame.size.height + mapView.frame.size.height
    

    这应该足以达到您想要的效果。如果您有任何问题,请告诉我。

    PS:mapView 只是我假设您在分段控件上方看到的视图的占位符。你可以用你想要的任何视图替换它。我假设您知道如何执行这些视图的分组 tableView 部分。

    【讨论】:

    • 这也是我最初的想法;但是,UITableView 中的选择一旦位于 UIScrollView 中就会停止工作。此外,您没有说明如何获得我想要的浮动效果。尽管如此,还是因为很好地解决了这个问题而被投票赞成!
    • 我的想法是,一旦滚动视图通过向上滑动一直滚动,tableViewHeader(而不是部分标题)将保持静态,之后 tableView(而不是 tableView 标题)应该滚动。你说的选择会停止工作是什么意思? didSelectRow 没有被调用?
    • 我刚才按你说的试过了。没用:(。我希望 mapView 滚动离开,而分段控件在向下滚动超过某个点后会锚定。在您的示例中,分段控件是 tableview 的一部分,所以一旦我向下滚动它就消失了在 tableview 上。由于 tableview 本身是一个滚动视图,它在滚动视图内的事实没有做任何事情。我能够修复没有调用的 didSelectRow,所以忽略那部分。
    • 我认为您可能必须使用 scrollViewDidScroll 委托方法,检查滚动视图偏移量并根据偏移量启用/禁用 tableView 滚动。 theTableView.scrollEnabled = theScrollView.contentOffset.y > theTableView.frame.origin.y;本周某个时间将在测试项目中尝试此方法,如果我能提供帮助,请告诉您。
    • 你是怎么做到的?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-05-22
    • 1970-01-01
    相关资源
    最近更新 更多