将 ScrollView 高度调整为屏幕高度?

Posted

技术标签:

【中文标题】将 ScrollView 高度调整为屏幕高度?【英文标题】:Resize UIScrollView's height to screen height? 【发布时间】:2016-08-13 22:33:14 【问题描述】:

黑色 - 屏幕框架/尺寸

红色 - 默认 UIScrollView 的框架/大小

黄色 - 我的按钮。

我希望始终将该按钮保留在底部。所以例如在 3.5 英寸屏幕上,可以滚动,按钮在底部,没问题。现在,当我们移动到 5.5 英寸屏幕时,就像这张图片一样,按钮不再位于底部。我想要做的是改变 UIScrollView 的高度,但它不起作用:

if(self.view.frame.height > contentView.frame.height)
    
        print("fixing scroll view")
        contentView.frame = CGRectMake(0, 0, self.view.frame.width, self.view.frame.height * 2)
        scrollView.contentSize = CGSizeMake(self.view.frame.width, self.view.frame.height * 2)
    

self.view.frame.height * 2 仅用于测试。有什么问题?

【问题讨论】:

一方面,为什么不使用自动布局?这将为您做到这一点。如果这不是一个选项,那么这段代码可能需要在 viewDidLayoutSubviews 方法中才能正常工作。 TheValyreanGroup 我怎么能使用自动布局呢?我怎么能把 viewDidLayoutSubviews 放进去?刚开始学习ios开发 您是否启用了自动布局并使用情节提要? 是的,启用自动布局并使用情节提要 看我的回答。这是一个关于自动布局的很棒的教程。 raywenderlich.com/115440/… 【参考方案1】:

响应迟,但是对于那些需要一个按钮在滚动视图中停留在屏幕底部的人,如果内容视图应该与屏幕高度相同,试试这个:

    从父级设置 ScrollView 上下左右约束为 0 将 ContentView 设置为 ScrollView 的等宽和等高 从 ScrollView 设置 ContentView 上、左、右、下约束为 0 给滚动视图中的每个元素一些约束,从上到下链接所有内容 在元素之间选择一个约束并将其删除,或将其设为低优先级。我会说将其设为低优先级,因为如果您必须删除 Equal Height,则布局不会中断。

【讨论】:

【参考方案2】:

使用自动布局,您只需将 pin 约束添加到您的 scrollView 到超级视图的每个角落。

将 4 个约束设置为 0,一切就绪。

【讨论】:

但是如何设置最小高度呢?我至少需要 600,否则它不适合 3.5 英寸,但在 5.5 英寸上,它需要全高 如果您需要为不同尺寸的屏幕设置不同的布局,您可以使用尺寸等级。将您的尺寸等级从 Any Any 更改为您需要的任何尺寸,然后也为此设置约束。无论使用哪种尺寸,它都会使用这些约束。这可以在故事板视图的底部中心找到,与约束工具内联。

以上是关于将 ScrollView 高度调整为屏幕高度?的主要内容,如果未能解决你的问题,请参考以下文章

根据设备高度在 ScrollView 中动态调整 Nativescript ContentView 的大小

JQuery Mobile 滚动视图适合屏幕高度

使用多个 SubView 调整 ScrollView

如何根据屏幕分辨率调整 jqGrid 高度?

嵌套 UICollectionView 时设置 ScrollView 高度问题

Swiftui 将 VStack 子项高度调整为内容高度