Noa*_*ick 2 objective-c uiscrollview ios
我很难理解你可能会发现的一些简单的问题UIScrollView
.
为什么我们增加contentSize
而不是增加UIScrollView
?实际上,我不明白界限和contentSize
做法.
当我设置pagingEnabled
为YES时,scrollView如何知道停止滚动的位置?
我想在我的页面之间添加间隙UIScrollView
.(pagingEnabled = YES
)我在互联网上搜索,我发现以下代码,rob mayoff写道:
Run Code Online (Sandbox Code Playgroud)- (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); }
代码的来源: 如何在视图之间创建一个带有空格的分页scrollView
这段代码工作正常,但只要我不理解它就没关系.
我知道最终页面将加载其原始大小,但我不明白它是如何发生的,因为每个页面都用kGutterWidth减去.
为什么rob会使用kGutterWidth增加scrollView的框架?
好吧,这个问题可能听起来很愚蠢,但我真的不明白.在代码中,Rob创建了一个名为的新scrollView对象scrollView
.它的价值等于self.scrollView
价值.好吧,我不明白如何做出改变scrollView
,影响self.scrollView
,因为它们是不同的对象.他们的内存地址不同.
我很难理解这些问题很长一段时间.今天我决定把它们写在这里.
谢谢.
1-您可以查看以下bounds
属性的实际描述UView
:
边界矩形,用于描述视图在其自身坐标系中的位置和大小.
而实际的contentSize
:
The size of the content view.
Run Code Online (Sandbox Code Playgroud)
第一个与UIView
自身相关的实际大小(frame
与其相关superView
)有关.第二个与它相关contentSize
,其中contentSize
比它更大frame
,为您提供滚动功能.
2-从文档:
如果此属性的值为YES,则滚动视图会在用户滚动时停止滚动视图边界的倍数.默认值为NO.
我想它是根据你的尺寸(宽度)来计算UIScrollView
的contentSize
.例如,具有320p contentSize
UIScrollView
帧的640p 将具有2"页".(640/320 = 2).
3-通过将UIView
每个页面"内部"的内容小于实际页面来创建间隙.这基本上是Rob在这里做的事情:
CGRect frame = CGRectMake(scrollViewSize.width * i, 0,
scrollViewSize.width - kGutterWidth, scrollViewSize.height);
Run Code Online (Sandbox Code Playgroud)
因此,一个UIScroll
具有以下框架(0.0f,0.0f,320.0f,480.0f)
,用contentSize
的(1280.0f,480.0f)
会给这样的:
第1项的框架=> (0.0f,0.0f,300.0f,480.0f)
第2项的框架=> (320.0f,0.0f,300.0f,480.f)
第3项的框架=> (640.0f,0.0f,300.0f,480.0f)
第4项的框架=> (960.0f,0.0f,300.0f,480.0f)
编辑1.0:
我根本不明白."将每个页面中的视图放在比实际页面小的位置"是什么意思?
所以让我们举个例子,我用过:所以你现在有4个"页面",实际上你所拥有的基本上是UIScrollView
分为3次,它给你4个不同的地方,我们可以调用页面.在每个"页面"里面,为了给每个页面之间的"空间"感,你要放一个UIView
小于实际的页面.
编辑2.0:
也许更直观的东西会帮助你:
编辑3.0:
如果您了解分页的工作方式,这很容易... 320px + 20px = 340px,超过iPhone屏幕尺寸的320px.由于每个UIView
添加到UIScrollView
340-20 = 320px,您将拥有大小为340px的"Pages".所以UIViews
最终得到1020px的340*3(数量)基本上是3个UIViews + 3个空格
归档时间: |
|
查看次数: |
334 次 |
最近记录: |