【问题标题】:UIScrollview and Nav bar content offset issueUIScrollview 和导航栏内容偏移问题
【发布时间】:2017-02-05 00:24:20
【问题描述】:

所以我想了解导航栏和滚动视图如何协同工作。

我遇到的问题是,当我将标签放在具有导航栏和滚动视图的视图控制器上时,似乎我必须将标签放在导航栏下方,以便它被导航栏遮挡才能获得适当的偏移量。

问题是,如果我单击视图控制器并将顶部栏从推断更改为无并以这种方式设置我的视图,然后在我的视图设置后将其切换回来,它似乎可以工作,例如它会自动将我在界面构建器上的内容移动到导航栏下方,然后所有约束都可以正常工作。

我猜我在这里错过了关于如何设置滚动视图和导航栏的概念,因为您不必将其更改为无,然后再返回以纠正视图?

编辑 1:它似乎与我将标签顶部固定在哪里有关....如果我将它固定到顶部布局指南(因此它可以成功调整导航栏和状态栏)然后它不会根本不动,如果我将它固定到容器视图的顶部,我将其设置为 64pts,我不想硬编码?

【问题讨论】:

    标签: ios uiscrollview navbar


    【解决方案1】:

    这取决于Translucent 的导航栏属性 如果导航栏是半透明的,则内容可见,如下例所示。这需要将滚动视图扩展到导航栏后面

    如果Translucent 设置为false,则滚动视图无需位于导航栏后面,因此将滚动视图推到导航栏下方。

    从红外更改为无会导致视图控制器将导航栏用作屏幕上的普通元素,而不管其半透明属性如何。

    更新 1:实施

    我想我知道你想用滚动视图做什么,但为什么要使用容器?为什么不直接将 imageViews 和 Labels 添加到 scrollView。我还建议一个更好的方法来解决这个问题,为什么不使用 tableViewController 以视图作为其标题并且没有任何单元格。

    您现在可以为内容设置固定大小或以编程方式更改大小

    从您的 containerView 创建一个 IBOutlet 到您的代码

    viewDidLoad

    containerView.frame = CGRect(x: 0, y: 0, width: self.tableView.frame.width, height: self.tableView.frame.height)
    

    containerView.frame = CGRect(x: 0, y: 0, width: self.tableView.frame.width, height: 200)
    

    containerView.frame = CGRect(x: 0, y: 0, width: self.tableView.frame.width, height: self.tableView.frame.height * 2)
    

    取决于您要如何配置视图。我认为这是使用界面生成器处理 scrollView 的最简单方法。

    【讨论】:

    • 谢谢,那么我该如何正确设置界面。目前我有一个继承了导航栏的视图控制器,因为它与此相关,我在导航栏下方的视图控制器上放置了一个滚动视图,因为我希望内容在它下方滚动以便我可以看到它。然后我在滚动视图上添加一个新视图,用作容器视图,然后我可以在其中添加我的图像和标签以滚动,这个视图也占据了整个大小。现在,当我将标签放在顶部并固定它,然后运行时,它似乎显示在模拟器上的错误位置(添加两倍的导航栏大小)
    • 对我的原作添加了更新,这似乎是我固定标签的地方?不确定它的顶部锚点应该是什么
    猜你喜欢
    • 2011-06-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-07-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-07-03
    相关资源
    最近更新 更多