iOS 10联系人照片在导航栏上

时间:2017-01-20 08:36:33

标签: ios uinavigationbar

我希望在iOS 10中使用与“联系人”应用相同的动画构建一个视图控制器。 当您向下滚动页面时,联系人的照片会显示在导航栏的中间。

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

2 个答案:

答案 0 :(得分:3)

<强>研究

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

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

    因此,根据我的观点,最好的解决方案(但不是最清晰的解决方案)是:

    1. 创建您自己的自定义视图(XIB),它看起来像navbar iteself - 就像上面的选项3一样。包括您自己的后退按钮实现等。
    2. 隐藏self.navigationController!.isNavigationBarHidden = true中的原始导航栏viewWillAppear(_ animated: Bool)。另外,请不要忘记将其带回viewWillDisappear(_ animated: Bool)
    3. 将您自己的视图放在屏幕顶部。不在顶部布局指南的下方,但实际上在屏幕上方。你的视图vill undercolor状态栏。使用视图的上边距来填充状态栏下的内容。
    4. 像在UITableView Scroll event
    5. 中所说的那样实施动画

      此解决方案要求您维护自己的&#34; navbar&#34;看起来像原生的一样。然而,与导航栏修改不同,这可能适用于iOS的未来版本。

答案 1 :(得分:2)

一个技巧可能是导航栏不可见。 在故事板中设置模拟指标 - &gt;顶栏=无(你甚至可以避免它)。

enter image description here

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

Swift 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 enter image description here