容器视图和滚动视图呈现偏移的表示
Posted
技术标签:
【中文标题】容器视图和滚动视图呈现偏移的表示【英文标题】:A container view and scroll view present an representation which is offset 【发布时间】:2014-10-17 09:47:03 【问题描述】:我有一个包含所有 UI 元素的 UIScrollView 应用程序。 Container 中的元素之一,它具有嵌入式 UIViewController 和 UIScrollView,其中包含 UIImage 和一些绘制在其上的 UILabel。
然而,我在容器的 UIScrollView 中的呈现存在问题,因为 UIImage 应该填充整个可滚动内容,但顶部有一个栏。这个偏移量很烦人,但也会影响我对分数的计算。 (图像应该填满整个圆形边框。
我在包含 UIViewController 的 ViewDidLoad 中设置了容器视图的大小(使用约束)(结果,盒子,正如预期的那样):
[self floorPlanContainerWidthConstraint].constant = [self view].frame.size.width - self.marginWidthConstraint.constant * 2;
if([delegate isiPad])
[self floorPlanContainerHeightConstraint].constant = 300;
[_floorPlanContainer layoutIfNeeded];
然后在容器的 UIViewController 中,在 ViewWillDisplay 上,我更新 UIImageView 尺寸,该尺寸包含在距离为“0”的滚动视图的边缘:
[super viewWillAppear:animated];
[self imageContainerHeightConstraint].constant = [self parentView].frame.size.height;
[self imageContainerWidthConstraint].constant = [self parentView].frame.size.width;
[_imageView layoutIfNeeded];
[_scrollView layoutIfNeeded];
NSLog(@"Parent frame: %f, %f, location %f, %f", [self parentView].frame.size.width, [self parentView].frame.size.height, [self parentView].frame.origin.x, [self parentView].frame.origin.y);
NSLog(@"Image frame: %f, %f, location %f, %f", _imageView.frame.size.width, _imageView.frame.size.height, _imageView.frame.origin.x, _imageView.frame.origin.y);
NSLog(@"Scroll frame: %f, %f, location %f, %f", _scrollView.frame.size.width, _scrollView.frame.size.height, _scrollView.frame.origin.x, _scrollView.frame.origin.y);
NSLog(@"Content frame: %f, %f, location %f, %f", _scrollView.contentSize.width, _scrollView.contentSize.height, _scrollView.contentOffset.x, _scrollView.contentOffset.y);
NSLog(@"Scroll frame zoom %f", [_scrollView zoomScale]);
控制台输出如预期(我认为):
Parent frame: 351.000000, 200.000000, location 12.000000, 41.000000
Image frame: 351.000000, 200.000000, location 0.000000, 0.000000
Scroll frame: 351.000000, 200.000000, location 0.000000, 0.000000
Content frame: 351.000000, 200.000000, location 0.000000, 0.000000
Scroll frame zoom 1.000000
这表明内容框架与滚动视图和图像的大小相同,但是内容稍微大一点(如所见的条形图)而值不支持这一点怎么办?我可以垂直滚动图像,而它应该完全适合(水平适合)。
如果我将容器视图重新定位在布局的下方,它会变得更好,所以有些问题。我现在花了几个小时试图找出问题所在,但找不到它,所以任何建议都非常感谢!
【问题讨论】:
【参考方案1】:尝试设置self.edgesForExtendedLayout = UIRectEdgeNone
。
【讨论】:
这似乎是正确的方向。但是,如果我把它放在容器视图中,它什么也不做,只在父视图控制器中。这意味着内容最终位于导航栏下方,但我可以手动偏移。 @LuukD.Jansen 检查包含滚动视图contentInset
,可能它的top
插入设置为非零值。以上是关于容器视图和滚动视图呈现偏移的表示的主要内容,如果未能解决你的问题,请参考以下文章
如何在 iOS 中为表格视图和滚动视图设置偏移量,以便两者一起滚动