2012-12-27 45 views
8

我有一个UIViewController,我想给它添加一个UIScrollView(启用滚动支持),有可能吗?将UIScrollView添加到UIViewController

我知道这是可能的,如果你有一个UIScrollViewUIViewController添加到它,但我也有兴趣,如果正好相反,如果我卡恩添加UIScrollView到现有UIViewController,这样,我得到的滚动功能。

编辑

我想我已经找到了答案:Adding a UIViewController to UIScrollView

+0

你可以添加UIScrollView来查看UIViewController&你可以查看UIViewController到UIScrollView –

+0

在做类似的事情之前,我会看看什么是控制器和什么是视图。他们是非常不同的东西。 – Mert

+0

您可以将scrollview添加到视图控制器并将视图控制器添加到scrollview,只需将您的scrollview作为子视图添加到您现有的viewController – Talha

回答

20

UIViewControllerview属性。因此,您可以将UIScrollView添加到其view。换句话说,您可以将滚动视图添加到视图层次结构中。

这可以通过代码或通过XIB来实现。另外,您可以将视图控制器注册为滚动视图的代理。通过这种方式,您可以实现执行不同功能的方法。见UIScrollViewDelegate协议。

// create the scroll view, for example in viewDidLoad method 
// and add it as a subview for the controller view 

[self.view addSubview:yourScrollView]; 

您也可以覆盖loadView方法UIViewController类,并设置滚动视图为您所考虑的控制器的主视图。

编辑

我创建了一个小样品给你。在这里,您将滚动视图作为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); 

,你需要重新安排的view1view2位置。

P.S.我在这里使用ARC。如果你不使用ARC,你需要明确release alloc-init对象。

+0

嗨我想到了这一点,添加UIScrollView作为我的ViewController子视图,只是我怀疑这是否会允许“滚动功能”...(你知道,因为我把它添加为“子视图”..) – user1903992

+0

@ user1903992当然,如果滚动视图被添加为子视图,它将在此上面。考虑像堆栈一样的视图层次结构。滚动视图将响应用户交互。 –

+0

因此,每当你添加一个视图*它坐在*之上?嗯.....有趣...不知道......看起来确实像一个堆栈。 – user1903992