1

在 aUIViewController中,我需要下半部分可滚动。所以我添加了一个UIScrollView并将其定位在视图高度的一半。在该viewDidAppear方法中,我放置了以下两行代码以使其可滚动。

self.scrollView.contentSize = CGSizeMake(self.view.frame.size.width, self.scrollView.frame.size.height);
self.scrollView.frame = self.view.frame;

如果滚动视图填满整个视图,我已经测试过,这种方式有效。但是这种方法不能满足我的需要。滚动视图会自动向上移动并占据整个屏幕。我认为这是导致此问题的第二行代码。

所以我删除了滚动视图,UIView在视图控制器中添加了两个 s。在底部视图中,我添加了UIScrollView. 在该viewDidAppear方法中,我将相同的两行代码行更改为第二行以引用UIView包含滚动视图的框架。

self.scrollView.contentSize = CGSizeMake(self.view.frame.size.width, self.scrollView.frame.size.height);
self.scrollView.frame = self.containerView.frame;

但它也不会滚动。

谁能告诉我如何正确地做到这一点?

谢谢你。

4

1 回答 1

1

伙计,您一直将滚动视图的框架设置为与您实际尝试实现的完全不同的东西。

如果您要做的只是设置滚动视图,使其仅占用一半空间,那么您为什么不直接设置,frame以便height仅覆盖您希望它覆盖的屏幕部分;然后设置x & y坐标,以便您从正确的位置绘制滚动视图。

做这样的事情:

//Shortcut to view's frame.
CGRect viewsFrame = self.view.frame;

/**
CGRectMake takes 4 parameters: x, y, width, height
x: is set to 0 since you want the scrollview to start from the left with no margin
y: you want the y position to start half way, so we grab the view's height and divide by 2  
width: you want your scrollview to span from left to right, so simply grab the view's width
height: you want your scrollview's height to be half of your screen height, so get view's height and divide by 2.
*/
CGRect frameForSV = CGRectMake(0, viewsFrame.size.height/2, viewsFrame.size.width, viewsFrame.size.height/2);

UIScrollView *myScrollView = [[UIScrollView alloc] initWithFrame:frameForSV];
[self.view addSubview:myScrollView];

然后设置您的内容大小,而不是基于 ansolute 值,最好根据滚动视图中实际内容的大小来设置它,以便您的滚动视图始终滚动以覆盖其中的所有内容。

另外,请记住,只有在 contentsize 大于滚动视图的框架时,您的滚动视图才会滚动

更新 1阅读您在这篇文章中的评论后,只需注释掉您viewController.m文件中与您相关的任何代码,scrollview因为您在界面构建器中设置了所有内容。

这是结果: 在此处输入图像描述

于 2014-01-30T20:00:20.250 回答