【发布时间】:2016-05-12 13:46:35
【问题描述】:
我想知道在这个scrollView上使用initWithFrame的真正意义是什么,因为在那之后我们还设置了scrollView的尺寸,并且我们将scrollView添加为视图的子视图。
那么为什么我们需要指定这个 initWithFrame 呢?当frame是self.view.frame的时候我其实不是很懂(如果我们设置一个不同的矩形,比如0,0 50,50我会更好理解)
UIScrollView *scrollView = [[UIScrollView alloc] initWithFrame:self.view.frame];
scrollView.contentSize = CGSizeMake(847, 1129);
UIImageView *imageView = [[UIImageView alloc] initWithImage: image];
[scrollView addSubview:imageView];
[self.view addSubview:scrollView];
谢谢
【问题讨论】:
-
你应该调用 initWithFrame 传入
self.view.bounds,而不是frame。 -
确实,如果 self.view.frame 的原点不为零,那么您的滚动视图将偏移相同的量,可能不是您想要的。填充其父视图的子视图应将其框架设置为 parentView.bounds。
-
@Mike Weller :好的,谢谢,总是用 uiimageView 或 uiscrollView 指定 initWithFrame 吗?我有点困惑,因为我假设“孩子”知道它的父边界......编辑:另外,在这种情况下,我们会看到具有非零原点的框架吗?
-
你总是需要设置一个框架,否则默认将是 CGRectZero 所以视图将不可见,因为它的宽度和高度为零。但是,UIImageView 有点不同,因为它会在您设置图像时自动调整其大小。但是,您仍然需要设置其框架的原点 (x, y) 以准确更改它在父视图中的位置。
标签: ios objective-c uiscrollview