【问题标题】:UINavigationBar clips top contentUINavigationBar 剪辑顶部内容
【发布时间】:2023-04-01 19:52:01
【问题描述】:

我在UINavigationItem 中添加了一个自定义titleView,其中包含一个旨在位于状态栏下方的视图。它看起来很好,当我推动另一个视图控制器并在标准的从右到左动画中过渡时,它看起来很好。但是,当我[self.navigationController popViewControllerAnimated:YES] 时,它会剪辑此视图的顶部,直到动画完成。请参阅附图以获得对问题的更好解释。

只有在 pop-animation 完成后,它才会再次看起来正常。我已经尝试了我能想到的一切。在viewControllernavigationBar 的所有视图上将cropsToBounds 设置为NO。我也试过layer.masksToBounds 和几乎所有听起来很熟悉的属性。我添加了一个计时器,用于打印 navigationBar 的框架矩形和自定义 titleView,它们似乎没有改变任何东西。

有人知道我做错了什么吗?

【问题讨论】:

    标签: ios ios7 uinavigationbar uistatusbar


    【解决方案1】:

    两种方法:

        if ([self respondsToSelector:@selector(setEdgesForExtendedLayout:)]) { // if iOS 7
        self.edgesForExtendedLayout = UIRectEdgeNone; //layout adjustements
    }
    

    或者

    您需要设置视图控制器的 Delta。从实用区域(第一项)将故事板切换到 ios6.1 或更高版本。然后选择您的 Vc 视图,在实用程序区域的尺寸检查器菜单中,框架下方将有 delta 部分。每个增量之前都会有一个三角形。三角形 y 到 64(您应该使用 ios6.1 或更高版本的情节提要)。

    如果您需要有关 Delta 的帮助,请访问: Interface Builder: What are the UIView's Layout iOS 6/7 Deltas for?

    【讨论】:

    • 我已经尝试在我能想到的所有视图控制器上将edgesForExtendedLayout 设置为UIRectEdgeNoneUIRectEdgeAll,没有区别。问题不是典型的状态栏重叠,因为 iOS6/7 框架变化。这是 UINavigationBar 在动画时剪辑内容。我不会在制作动画时剪辑或遮盖内容。
    • 尝试第二个选项更好。用过 Delta 吗?
    • Deltas 不会解决这个问题,因为它不是 iOS6 和 7 之间的区别。就像我说的,当它不处于过渡状态时它看起来很好。弹出动画完成后,橙色条的剪辑部分再次出现。我不知道 deltas 将如何解决这个问题。
    猜你喜欢
    • 2011-01-15
    • 2019-06-07
    • 2010-12-31
    • 2013-10-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-03-12
    相关资源
    最近更新 更多