【发布时间】:2013-03-19 12:49:36
【问题描述】:
我很难理解关于UIScrollView 的一些您可能觉得简单的问题。
为什么我们增加
contentSize而不是UIScrollView的边界? 其实我不明白bounds和contentSize做了什么。当我将
pagingEnabled设置为YES 时,scrollView 怎么知道在哪里停止滚动?我想在我的
UIScrollView中的页面之间添加一个空白。 (pagingEnabled = YES) 我在网上搜索了一下,找到了如下代码,rob mayoff 写的:
- (void)viewDidLoad { [super viewDidLoad]; NSArray *colors = [NSArray arrayWithObjects:[UIColor redColor], [UIColor greenColor], [UIColor blueColor], nil]; #define kGutterWidth 20 UIScrollView *scrollView = self.scrollView; CGRect scrollViewFrame = scrollView.frame; scrollViewFrame.size.width += kGutterWidth; scrollView.frame = scrollViewFrame; CGSize scrollViewSize = scrollView.bounds.size; for (int i = 0; i < colors.count; i++) { CGRect frame = CGRectMake(scrollViewSize.width * i, 0, scrollViewSize.width - kGutterWidth, scrollViewSize.height); UIView *subview = [[UIView alloc] initWithFrame:frame]; subview.backgroundColor = [colors objectAtIndex:i]; [scrollView addSubview:subview]; [subview release]; } scrollView.contentSize = CGSizeMake( colors.count * scrollViewSize.width, scrollViewSize.height); }
代码来源: How to create a paging scrollView with space between views
这段代码可以正常工作,但只要我看不懂也没关系。
我知道页面最终会以原始大小加载,但我不明白这是怎么发生的,因为每个页面都减去了 kGutterWidth。
为什么rob用kGutterWidth增加了scrollView的frame?
好的,这个问题可能听起来很愚蠢,但我真的不明白。 在代码中,Rob 创建了一个名为
scrollView的新 scrollView 对象。 它的值等于self.scrollView值。 好吧,我不明白对scrollView所做的更改是如何影响self.scrollView, 因为它们是不同的对象。它们的内存地址不同。
长期以来,我一直在努力理解这些问题。 今天我决定把它们写在这里。
谢谢。
【问题讨论】:
标签: ios objective-c uiscrollview