将UIScrollView添加到UIViewController
我有一个UIViewController
,我想添加一个UIScrollView
(启用滚动支持),这可能吗?
我知道有可能,如果你有一个UIScrollView
来添加一个UIViewController
,但我也感兴趣,如果反向是真的,如果我可以添加UIScrollView
到现有的UIViewController
,这样我得到滚动function。
编辑
我想我找到了答案: 将UIViewController添加到UIScrollView
UIViewController
有一个view
属性。 因此,您可以在其view
添加UIScrollView
。 换句话说,您可以将滚动视图添加到视图层次结构中。
这可以通过代码或通过XIB实现。 此外,您可以将视图控制器注册为滚动视图的委托。 通过这种方式,您可以实现执行不同function的方法。 请参阅UIScrollViewDelegate
协议。
// create the scroll view, for example in viewDidLoad method // and add it as a subview for the controller view [self.view addSubview:yourScrollView];
您还可以覆盖UIViewController
类的loadView
方法,并将滚动视图设置为您正在考虑的控制器的主视图。
编辑
我为你创建了一个小样本。 在这里,您有一个滚动视图作为UIViewController
视图的子视图。 滚动视图有两个视图作为子视图: view1
(蓝色)和view2
(绿色)。
在这里,我想你可以只在一个方向滚动:水平或垂直。 在下面,如果您水平滚动,您可以看到滚动视图按预期方式工作。
- (void)viewDidLoad { [super viewDidLoad]; UIScrollView* scrollView = [[UIScrollView alloc] initWithFrame:CGRectMake(0, 0, self.view.bounds.size.width, self.view.bounds.size.height)]; scrollView.backgroundColor = [UIColor redColor]; scrollView.scrollEnabled = YES; scrollView.pagingEnabled = YES; scrollView.showsVerticalScrollIndicator = YES; scrollView.showsHorizontalScrollIndicator = YES; scrollView.contentSize = CGSizeMake(self.view.bounds.size.width * 2, self.view.bounds.size.height); [self.view addSubview:scrollView]; float width = 50; float height = 50; float xPos = 10; float yPos = 10; UIView* view1 = [[UIView alloc] initWithFrame:CGRectMake(xPos, yPos, width, height)]; view1.backgroundColor = [UIColor blueColor]; [scrollView addSubview:view1]; UIView* view2 = [[UIView alloc] initWithFrame:CGRectMake(self.view.bounds.size.width + xPos, yPos, width, height)]; view2.backgroundColor = [UIColor greenColor]; [scrollView addSubview:view2]; }
如果只需要垂直滚动,可以更改如下:
scrollView.contentSize = CGSizeMake(self.view.bounds.size.width, self.view.bounds.size.height * 2);
显然,您需要重新排列view1
和view2
的位置。
PS我在这里使用ARC。 如果不使用ARC,则需要显式release
alloc-init对象。