Iphone UIScrollView-启用分页后,我可以;更改“;页面宽度?
让滚动视图(PaginEnabled设置为YES)将页面宽度设置为滚动视图边界以外的值的最简单方法是什么 让我举个例子。假设我有一个10个项目的滚动视图,每个项目150像素宽,我的滚动视图300像素宽。如果我从视图1和2可见开始并水平向右滚动,我希望下一个“页面”显示项目2和3。如果我再向右滚动一页,我会看到第3项和第4项Iphone UIScrollView-启用分页后,我可以;更改“;页面宽度?,iphone,cocoa-touch,uiscrollview,Iphone,Cocoa Touch,Uiscrollview,让滚动视图(PaginEnabled设置为YES)将页面宽度设置为滚动视图边界以外的值的最简单方法是什么 让我举个例子。假设我有一个10个项目的滚动视图,每个项目150像素宽,我的滚动视图300像素宽。如果我从视图1和2可见开始并水平向右滚动,我希望下一个“页面”显示项目2和3。如果我再向右滚动一页,我会看到第3项和第4项 有人这样做过吗?如果没有,你会采取什么策略?亚历山大·雷皮刚刚在博客中谈到了这个话题:。简短回答:这并不像改变“页面”的宽度那么简单,但也不是太难 使用Ben链接到的我博客中
有人这样做过吗?如果没有,你会采取什么策略?亚历山大·雷皮刚刚在博客中谈到了这个话题:。简短回答:这并不像改变“页面”的宽度那么简单,但也不是太难 使用Ben链接到的我博客中的方法。使UIScrollView的大小为周围视图的一半(即150px),并将其向左移动,而不是使其居中 这会让你表现出你想要的行为 干杯,
Alex当然可以借助于滚动视图委托方法和内容偏移来完成 下面是相同的详细代码
int start;
int end;
int k=0;
- (void)scrollViewWillBeginDragging:(UIScrollView *)scrollView1
{
pageControlUsed = NO;
start = scrollView.contentOffset.x;
}
- (void)scrollViewDidEndDragging:(UIScrollView *)scrollView1 willDecelerate:(BOOL)decelerate
{
end = scrollView.contentOffset.x;
}
- (void)scrollViewWillBeginDecelerating:(UIScrollView *)scrollView1{
int diff = end-start;
if (diff>0)
{
k=k+150;
[scrollView setContentOffset:CGPointMake(k, 0) animated:YES];
}
else {
k=k-150;
[scrollView setContentOffset:CGPointMake(k, 0) animated:YES];
}
}
只需覆盖ScrollViewWillendDraging
- (void)scrollViewWillEndDragging:(UIScrollView *)scrollView withVelocity:(CGPoint)velocity targetContentOffset:(inout CGPoint *)targetContentOffset {
CGFloat pageWidth = 160;
targetContentOffset->x = pageWidth * (int)(targetContentOffset->x / pageWidth);
}
这在iOS 7.1~8.2上运行良好我在其他地方看到过这种方法,并尝试过,但不幸的是,我认为它没有达到我想要的效果。我需要的不仅仅是看到周围项目的边缘,在我的情况下,我需要有两个项目完全在屏幕上。不幸的是,这种方法对我来说效果不太好,尤其是在最左边/最右边的边缘。只需将scrollview设置为150px宽,但关闭剪辑。把整个东西放在一个300像素宽的视图中,然后打开剪辑。谢谢,本。正如我在对Alexander答案的评论中提到的,这肯定让我走上了正确的道路。一定要记下“digdog”在博客帖子上的评论,以确保它在你有需要交互的子视图时能正常工作。更多关于覆盖命中测试方法的信息:它不是那么简单,但我相信我已经弄明白了。你的帖子当然有帮助-谢谢!这种方法的一个问题是,只有当您按下滚动视图的一半时,滚动才起作用。@ChaseRoberts您可以调整点击测试来说明这一点:
UIScrollView *album = [[UIScrollView alloc] init];
album.translatesAutoresizingMaskIntoConstraints = NO;
album.pagingEnabled = YES;
album.clipsToBounds = NO;
album.showsHorizontalScrollIndicator = NO;
album.contentInset = UIEdgeInsetsMake(0, -50, 0, -50);
[view addSubview:album];
[view addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"H:|-50-[_album(220)]" options:0 metrics:metrics views:views]];
[view addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"V:|[_album(300)]" options:0 metrics:metrics views:views]];