将 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 的大小