2015-10-26 197 views
0

我有一个应该只能水平滚动的UIScrollView。滚动视图固定在屏幕的底部。我已将自动布局约束设置为固定高度。我将contentSize设置为固定大小。UIScrollView ContentSize高度过大

但是,当我运行应用程序时,内容显示在屏幕底部的一半。它将垂直滚动,看起来像是大约200像素。

我有一张地图和一个标签固定在滚动视图的上方,布局看起来完全如我所愿,除了滚动视图的内容似乎关闭。这是我写的代码:

在我.h文件中

@interface MapViewController : UIViewController <UIScrollViewDelegate> 
在viewDidLoad中

self.scrollView.delegate = self; 
[self.scrollView setContentSize:CGSizeMake(600, 100)]; 

// add some content 
UIView *personView = [[UIView alloc] initWithFrame:CGRectMake(0, 8, 100, self.scrollView.frame.size.height-16)]; 
personView.backgroundColor = [UIColor cyanColor]; 

UIView *personView2 = [[UIView alloc] initWithFrame:CGRectMake(110, 8, 100, self.scrollView.frame.size.height-16)]; 
personView2.backgroundColor = [UIColor redColor]; 

UIView *personView3 = [[UIView alloc] initWithFrame:CGRectMake(220, 8, 100, self.scrollView.frame.size.height-16)]; 
personView3.backgroundColor = [UIColor blueColor]; 

UIView *personView4 = [[UIView alloc] initWithFrame:CGRectMake(330, 8, 100, self.scrollView.frame.size.height-16)]; 
personView4.backgroundColor = [UIColor orangeColor]; 

[self.scrollView addSubview:personView]; 
[self.scrollView addSubview:personView2]; 
[self.scrollView addSubview:personView3]; 
[self.scrollView addSubview:personView4]; 

我不使用的UIScrollView经常,所以我失去的东西?有谁知道尺寸问题可能来自哪里?

此外,我做了的NSLog在框架的高度和contentSize高度和都等于100

编辑:

该视图是在导航控制器和I从隐藏=设定导航栏YES在第一次加载时隐藏= NO。我注意到,当我隐藏它时,内容高度是不同的,所以这一定与它有关。

+0

如果您使用约束,则不应设置'contentSize'。你应该使用约束来控制'contentSize'。阅读[技术说明TN2154:UIScrollView和Autolayout](https://developer.apple.com/library/ios/technotes/tn2154/_index.html)。 –

+0

@robmayoff是否有解决contentSize约束问题的方法,看起来像是更简单的解决方案。你也在你的回文结尾处留下了回文结束时的巴拿马:) –

回答

2

尝试设置您的scrollView的内容大小int“viewDidLayoutSubviews”方法并保持自动布局设置。

-(void)viewDidLayoutSubviews 
{ 
    [self.scrollView setContentSize:CGSizeMake(required_width, required_height)]; 
} 

检查设置为故事板中ViewController的导航栏。如果有,请尝试删除它。

请让我知道你是否仍然面临一些问题。

+0

是的,仍然看到相同的结果。当我推视图时有这个问题,但是当我呈现ViewController时,它看起来像我想要的。在我看来,这是在NavigationController中存在的一个问题 –

+0

然而,我相信问题在于你的布局。您是否使用SuperView的“布局指南”或“容器边距”设置了UIScrollView的约束条件? – Hanny

+0

一切都连接到超视图,我用导航栏对象替换导航控制器,它看起来像预期的。 –

相关问题