实现垂直 UIScrollView
Posted
技术标签:
【中文标题】实现垂直 UIScrollView【英文标题】:Implementing vertical UIScrollView 【发布时间】:2016-04-26 04:58:22 【问题描述】:在 UIScrollView 实现 2 天后,我放弃了自己做,尽管它应该很简单,但我做不到。
我需要一个带有自动布局的垂直滚动视图(我有 2 个需要缩放的背景图像),我有 Xcode 7.2,ios 部署目标 9.0,我正在使用情节提要
滚动视图是一个“新帐户”表单,内容很多,所以它可以有固定的高度
我尝试了很多选项,但没有一个有效,目前我有一个带有“内容视图”的滚动视图,其中包含所有组件。
问题: 1.- 如何在滚动视图中添加更多内容?如果我尝试放置更多组件(超过 ViewControler 的高度),它会自动将我的组件移动到 ViewController 矩形内
2.- 我怎样才能让它可滚动?如果我将内容视图固定到顶部、底部、左侧、右侧并使其具有固定高度(如 1000),则它不会滚动
任何帮助将不胜感激
【问题讨论】:
根据我的经验,如果您想使用滚动视图而不是表格视图。以编程方式执行此操作要容易得多,即使用框架创建视图,将其作为子视图添加到滚动视图并设置滚动视图内容大小。 但是以编程方式添加所有组件会很麻烦! 如果视图很复杂,您仍然可以在情节提要中创建它,然后连接到您的班级。然后将其添加为子视图。 【参考方案1】:Scrollview 将滚动到最后一个 UI 对象的末尾。但这不是滚动视图的默认行为。您应该在滚动视图上明确设置contentSize
。检查以下示例。
-(void)addImage
int count = 20;
UIScrollView * scView = [[UIScrollView alloc] init];
scView.frame = CGRectMake(30, 60, self.view.frame.size.width, 60);
UIButton * btn;
UIImageView * imgV;
float imgWidth = 44;
for(int i=0;i<count;i++)
imgV = [[UIImageView alloc] init];
imgV.frame = CGRectMake(i*imgWidth, 0, imgWidth, 44);
imgV.image = [UIImage imageNamed:@"gitar"];
[scView addSubview:imgV];
[scView setContentSize:CGSizeMake(imgWidth*count, 50)];
[scView setBackgroundColor:[UIColor redColor]];
[self.view addSubview:scView];
上述方法的作用是,它将在滚动视图中添加 20 个图像,最后在 for
循环中将所有图像添加到滚动视图后,我将contentSize
设置为滚动视图。此步骤使我的滚动视图滚动直到内容可用。我的示例显示水平滚动,您必须将此行为更改为垂直滚动。
【讨论】:
但是这个滚动视图不会在父级中以 X 为中心,对吗?它只会在 X 轴上放置 30 个单位 我只是在这里给你展示了一个例子。您可以根据需要创建滚动视图。而且在我的循环方法中,我增加了'x'原点,这就是为什么它是一个水平滚动视图。您应该增加“y”原点以使其成为垂直滚动视图。在我设置 contentSize 的方法结束时,我正在增加宽度值“imgWidth*count”,您应该增加高度值,即您应该指定高度值来代替“50”。以上是关于实现垂直 UIScrollView的主要内容,如果未能解决你的问题,请参考以下文章
web前端实现水平垂直居中positionrelativeabsolutetransformtranslateautodisplayflexjustifyaligncenter