UIScrollview不会滚动iOS

时间:2013-12-20 14:14:28

标签: ios objective-c uiscrollview

我在一个水平滚动的视图中创建了几个滚动视图。以下代码工作正常:

-(void)updateSection {
    builder = [NSMutableArray array];
    float xPosition = 0;
    float xposbut = 100;

    scrollView = [[UIScrollView alloc] initWithFrame:CGRectMake(0, 100, self.frame.size.width, self.frame.size.height - 69)];

    scrollView.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight;
    scrollView.delegate = self;
    [self addSubview:scrollView];

    for (int i = 1; i < itemArticleArray.count; i++) {
        ItemView *item = [ItemView loadNibs];
        item.frame = CGRectMake(xposbut, 10, item.frame.size.width, item.frame.size.height);

        xPosition += scrollView.frame.size.width + 2;
        xposbut += 500;
        UIView *seperatorView = [[UIView alloc] initWithFrame:CGRectMake(xposbut - 50, 4, 2, scrollView.frame.size.height - 8)];
        [scrollView addSubview:seperatorView];
        xPosition += scrollView.frame.size.width + 4;

        [scrollView addSubview: item];
        [builder addObject:item];
    }

    [scrollView setContentSize:CGSizeMake(xposbut, scrollView.frame.size.height)];
    [self addSubview:scrollView];
}

但是,当我将第8行代码更改为以下内容时:

scrollView = [[UIScrollView alloc] initWithFrame:CGRectMake(0, 400, self.frame.size.width, self.frame.size.height - 69)];

它使布局看起来很好,但滚动视图确实不会滚动。有什么想法吗?

4 个答案:

答案 0 :(得分:3)

您将contentSize.height设置为scrollView.frame.size.height,因此scrollView无法滚动。您必须将contentSize设置为scrollView的总高度,包括不可见区域。框架只是屏幕上的区域。

答案 1 :(得分:0)

设置滚动视图的内容大小。内容大小应大于frame.size,然后只滚动滚动视图。并且还可以滚动。

使用代码

scrollView.scrollEnabled=YES;
scrollView.contentSize=CGSizeMake(CGFloat width, CGFloat height);

高度应大于scrollView.frame.size.height,并在scrollview框架内添加scrollview内的内容。

答案 2 :(得分:0)

当内容大小大于帧大小时,

UIScrollview将滚动。在您的代码中,您将内容大小设置为帧大小,这就是滚动视图不滚动的原因。

答案 3 :(得分:0)

您必须为滚动提供一些工作空间,因此请查看:

  1. 在情节提要中创建滚动
  2. 为滚动
  3. 创建一个插座
  4. 并且.m文件中必须粘贴这些行
  5. 代码:

    (void)viewDidLoad {
        [super viewDidLoad];
        yourScroll.scrollEnabled=YES;
        yourScroll.contentSize=CGSizeMake(self.view.frame.size.width, self.view.frame.size.height*2);
    }
    
    /*
     * yourScroll.contentSize=CGSizeMake(your desired scroll width, your desired scroll height);
     * The values must be bigger than the viewController size
     */