我正在尝试创建一个“地铁”风格的 UIScrollView。它类似于 iTunes 应用程序如何处理不会命名的新 ios 版本中的面板。
我不知道如何让我的视图布局/滚动,以便显示序列中的下一个视图。我已经尝试了各种各样的方法,比如保持 contentSize 屏幕宽度,但将每个视图移动到 -10ish 上,这样它就会像上面那样显示。我尝试制作边界小于屏幕的滚动视图,以便显示下一个视图的一部分。没有任何效果。
这是我正在尝试做的图表:
在纸上看起来非常微不足道,但我似乎无法让它发挥作用。
我正在尝试创建一个“地铁”风格的 UIScrollView。它类似于 iTunes 应用程序如何处理不会命名的新 ios 版本中的面板。
我不知道如何让我的视图布局/滚动,以便显示序列中的下一个视图。我已经尝试了各种各样的方法,比如保持 contentSize 屏幕宽度,但将每个视图移动到 -10ish 上,这样它就会像上面那样显示。我尝试制作边界小于屏幕的滚动视图,以便显示下一个视图的一部分。没有任何效果。
这是我正在尝试做的图表:
在纸上看起来非常微不足道,但我似乎无法让它发挥作用。
我不确定我是否误解了您的要求 - 但这可能是了解如何设置它的起点:
- (void)viewDidLoad
{
[super viewDidLoad];
CGRect viewBounds = self.view.bounds;
CGRect scrollViewFrame = CGRectMake(0, 0, floorf(CGRectGetWidth(viewBounds) / 2.2), CGRectGetHeight(viewBounds));
UIScrollView *scrollView = [[UIScrollView alloc] initWithFrame:scrollViewFrame];
scrollView.center = self.view.center;
scrollView.contentSize = CGSizeMake(CGRectGetWidth(viewBounds) * 3, CGRectGetHeight(viewBounds) * 3);
scrollView.pagingEnabled = YES;
scrollView.clipsToBounds = NO;
UIPanGestureRecognizer *gestureRecognizer = scrollView.panGestureRecognizer;
[self.view addGestureRecognizer:gestureRecognizer];
for (int i = 0; i < 3; i++) {
CGRect frame = CGRectMake(10.f + (i * CGRectGetWidth(scrollView.bounds)), 10.f, CGRectGetWidth(scrollView.bounds) - 20.f, (CGRectGetHeight(scrollViewFrame) * 3) - 20.f);
UIView *view = [[UIView alloc] initWithFrame:frame];
view.backgroundColor = [UIColor redColor];
[scrollView addSubview:view];
}
[self.view addSubview:scrollView];
}
从字面上看,只是把它放在一个空的 viewController 中viewDidLoad:
需要注意的关键事项是
contentSize
需要足够宽以容纳所有面板clipsToBounds
应该是NO
这样你就可以看到额外的视图pagingEnabled
应该设置panGestureRecognizer
从滚动视图中抓取并将其附加到包含视图,以便在包含视图的边界(更大)中检测到平移,否则您只能检测滚动视图边界内的滚动