【问题标题】:View constraints change when UINavigation's Translucent is set to false当 UINavigation 的 Translucent 设置为 false 时,视图约束发生变化
【发布时间】:2017-03-03 07:23:09
【问题描述】:

当将 UINavigationBar 的 Translucent 属性设置为 false/(在 storyBoard 中未选中)。约束没有按预期工作。

ViewController 的功能:自定义相机模块,在 UIView 上显示相机预览。

查看层次结构

  • ViewController 的 View

    • PreviewView (UIView) 用于显示相机预览。 PreviewView 和 View 之间的约束如下。

当 UINavigationBar 半透明时

如您所见,约束设置为与超级视图相等的宽度和高度,但结果不一样。屏幕截图是横向/iPad,但即使是纵向,结果也是一样的。

当 UINavigationBar 为半透明时

另一方面,当 UINavigationBar 是半透明的时,约束可以正常工作。

【问题讨论】:

  • 你是怎么解决这个问题的?

标签: ios autolayout


【解决方案1】:

请检查此 Select View Controller -> IB Inspector -> (Extend Edges) -> Under Top Bars 请取消选择并尝试。

【讨论】:

    【解决方案2】:

    对我也不起作用。

    将导航栏更改为 isTranslucent = true 会更改视图布局。如果 isTranslucent == false,视图 origin.y 位于 0.0(在屏幕顶部),但如果 isTranslucent == true,则视图 origin.y 位于(导航栏高度),这意味着视图从导航栏下方开始。视图高度相应降低。

    为什么会这样?

    我的解决方法是调整布局代码以适应这种变化,但视觉变化会导致这种行为似乎很奇怪。

    【讨论】:

    • 我猜这是因为当导航栏是半透明的时视图被放在导航栏下,所以导航栏有一些东西可以通过半透明显示。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-04-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-05-02
    • 1970-01-01
    相关资源
    最近更新 更多