在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;
但它也不会滚动。
有谁能告诉我如何正确地做到这一点?
谢谢。
答案 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>
这是结果: