【问题标题】:iOS 10 contacts photo goes on navigation bariOS 10 联系人照片出现在导航栏上
【发布时间】:2017-06-05 04:23:28
【问题描述】:

我想在 iOS 10 中构建一个与联系人应用程序相同动画的视图控制器。 当您向下滚动页面时,联系人的照片会出现在导航栏的中间。

iOS 10 中有 API 还是自定义实现?

【问题讨论】:

    标签: ios uinavigationbar


    【解决方案1】:

    研究

    尝试修改导航栏的技术有很多。我花了很多时间一个接一个地尝试:

    1. 苹果官方教程 https://developer.apple.com/library/content/samplecode/NavBar/Introduction/Intro.html#//apple_ref/doc/uid/DTS40007418-Intro-DontLinkElementID_2 这只在视觉上扩展了导航栏。事实上,把第二个 在栏下查看并将颜色和线条设置为看起来像 第二个视图是一部分吧。但事实并非如此。
    2. Levelmoney 为自定义导航栏制作了不错的库:https://github.com/Levelmoney/resizable-navigation-bar
    3. 另一种解决方案是创建您的视图,它看起来像导航栏(使用 Apple 示例中的背景颜色和阴影),并将其放入导航栏中,如下所示:self.navigationController!.navigationBar.addSubview(self.titleView!) 但是这看起来很棒,它隐藏了导航栏元素和后退按钮不响应单击。即使我尝试了不同的图层或将视图置于前/后,我也无法完成这项工作。

    分辨率

    因此,在我看来,最好的解决方案(但不是最清晰的解决方案)是:

    1. 创建您自己的自定义视图 (XIB),它看起来像导航栏本身 - 就像上面的选项 3. 中一样。包括您自己实现的后退按钮等。
    2. 隐藏原始导航栏:self.navigationController!.isNavigationBarHidden = true in viewWillAppear(_ animated: Bool)。也不要忘记把它带回来viewWillDisappear(_ animated: Bool)
    3. 将您自己的视图放在屏幕顶部。不在顶部布局指南下方,而是在屏幕顶部。您的视图会为状态栏添加颜色。使用视图的上边距来适应状态栏下方的内容。
    4. 像他们在UITableView Scroll event 中所说的那样实现动画

    此解决方案要求您维护自己的“导航栏”,使其看起来与原生导航栏相同。不过,与导航栏修改不同,这可能会在未来的 iOS 版本中使用。

    【讨论】:

      【解决方案2】:

      一个技巧可能是使导航栏不可见。 在情节提要中设置 Simulated Metrics -> Top Bar = None(你甚至可以避免它)。

      在您的视图控制器中将其添加到 viewDidLoad:

      斯威夫特 3.0

          navigationController?.navigationBar.setBackgroundImage(UIImage(), for: .default)
          navigationController?.navigationBar.shadowImage = UIImage()
          navigationController?.navigationBar.isTranslucent = true
      

      目标-C

          [self.navigationController.navigationBar setBackgroundImage:[UIImage new] forBarMetrics:UIBarMetricsDefault];
          self.navigationController.navigationBar.shadowImage = [UIImage new];
          self.navigationController.navigationBar.translucent = YES;
      

      然后你应该在滑动 uitableview/uiscrollview 时创建一个动画,其中包含联系人的详细信息,这取决于你想要做什么......

      编辑: 在这里您可以在模拟器上找到一个示例......对于丑陋的模型感到抱歉:D

      【讨论】:

        猜你喜欢
        • 2022-10-04
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-01-14
        • 2011-04-05
        • 1970-01-01
        • 2011-09-23
        相关资源
        最近更新 更多