如何设置ScrollView内容的宽度?

时间:2014-03-29 23:41:57

标签: ios objective-c uiscrollview uiscrollviewdelegate

我正在处理一个scrollview,我希望它能够启用分页,但是当我尝试将内容设置为自定义宽度时,我需要帮助,谢谢!

继续我正在尝试的事情:

- (void)scrollViewWillEndDragging:(UIScrollView *)scrollView withVelocity:(CGPoint)velocity targetContentOffset:(inout CGPoint *)targetContentOffset {

    int PageNum = (int)(scrollView.contentOffset.x / 140);
    targetContentOffset->x = PageNum * (int)(targetContentOffset->x / PageNum);

}

当我scrollViewDidScroll:添加一个NSlog并正确打印当前页面时,无效的是分页宽度的自定义:

- (void)scrollViewDidScroll:(UIScrollView *)scrollView{

    int PageNum = (int)(scrollView.contentOffset.x / 140);
    NSLog(@"%d", PageNum);

}

希望有人可以帮助我,谢谢!

2 个答案:

答案 0 :(得分:0)

坦率地说,我真的不了解你的代码以及你要做什么。 这个答案可能与您的问题无关,但无论如何它可能会有所帮助。

targetContentOffset->x = PageNum * (int)(targetContentOffset->x / PageNum);

相当
targetContentOffset->x = (int)(targetContentOffset->x);

除了一些四舍五入之外似乎没什么用。如果你为舍入的副作用这样做,那么忽略我的答案。

答案 1 :(得分:0)

您无需在scrollViewWillEndDragging:withVelocity:targetContentOffset:中实施paging方法即可启用UIScrollView。为此,您只需要:

  • 将您的滚动视图的pagingEnabled属性设置为YES。有关此属性的文档说明:如果此属性的值为YES,则滚动视图会在用户滚动时停止滚动视图边界的倍数。
  • 将您的子视图(页面)添加到滚动视图。他们的width必须等于滚动视图的宽度,才能检索水平分页的滚动视图。
  • 设置您的滚动视图的contentSize属性。

所以你的代码应该是这样的:

[scrollView setPagingEnabled:YES];
NSInteger numberOfPages = 100;

CGFloat pageWidth = scrollView.bounds.size.width;
CGFloat pageHeight = scrollView.bounds.size.height; // can be something else

for(NSInteger i = 0; i < numberOfPages; i++)
{
    UIView * view = [[UIView alloc] initWithFrame:CGRectMake(i * pageWidth, 0, pageWidth, pageHeight)];
    // do somethings with the page view
    [scrollView addSubview:view];
}

[scrollView setContentSize:CGSizeMake(numberOfPages * pageWidth, scrollView.bounds.size.height)];