无法将UIScrollView添加到视图的一部分

时间:2014-01-30 19:49:43

标签: ios uiview uiviewcontroller uiscrollview contentsize

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

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

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

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

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

但它也不会滚动。

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

谢谢。

1 个答案:

答案 0 :(得分:1)

老兄,你继续将scrollView的框架设置为与你实际想要实现的完全不同的东西。

如果您只想设置滚动视图以使其仅占据空间的一半,那么为什么不设置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值,最好根据滚动视图中实际内容的大小来设置内容大小,以便滚动视图始终滚动以覆盖其中的所有内容。

此外,请记住,只有当contentize大于scrollview的框架时才会滚动滚动视图 在您阅读此帖子中的评论后,

更新1 只需在viewController.m文件中注释掉与scrollview相关的任何代码,因为您在界面构建器中设置了所有内容。< / p>

这是结果: enter image description here