2015-10-26 69 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

一切都連接到超視圖,我用導航欄對象替換導航控制器,它看起來像預期的。 –