2016-05-01 79 views
1

我想讓我的滾動視圖到達文本底部而不必「強制滾動」。所以當我向下滾動時,右側的滾動條在我到達剩餘文本的底部之前停止。我必須再次用力滾動(以便右側的滾動條縮小,顯示剩餘的文本)。希望有人遇到過這個問題。我不想強制滾動。我希望它以一種乾淨的方式顯示。UIScrollView不能像大多數滾動視圖一樣工作

UIScrollView *theScroll = [[UIScrollView alloc] initWithFrame:CGRectMake(0.0f, 0.0f, 320.0f, 568.0f)]; 
UILabel *label = [[UILabel alloc] initWithFrame:CGRectMake(17.0f, 150.0f, 286.0f, 568.0f)]; 

label.text = @" a very large portion of text "; 

label.backgroundColor = [UIColor clearColor]; 
label.font = [UIFont fontWithName:@"Chalkduster" size:16.0]; 
label.lineBreakMode = NSLineBreakByWordWrapping; 
label.numberOfLines = 0; 
[label sizeToFit]; 
[theScroll setShowsVerticalScrollIndicator:NO]; 
theScroll.contentSize = CGSizeMake(theScroll.contentSize.width, label.frame.size.height); 
[theScroll addSubview:label]; 
[self.view addSubview:theScroll]; 

這都是在viewDidLoad方法中。

+0

而不是給滾動視圖一個固定的框架,嘗試與視圖的框架。例如:'initWithFrame:self.view.frame' – UditS

+1

@UditS其實它應該基於視圖的「邊界」,而不是它的「框架」。 'initWithFrame:方法self.view.bounds'。當視圖的起源不是0,0時,這種不同就變得清晰了。 – rmaddy

回答

0

有兩件事情看起來不太合適。

  1. 您將標籤的origin.y設置爲150。您是否意味着將標籤從滾動視圖的內容區域的頂部開始到目前爲止?
  2. 您將滾動視圖的contentSize.height設置爲與標籤的高度相同。這與#1衝突。對於所有內容,contentSize.height應該足夠高。

假設#1是正確的,#2應設置爲:

theScroll.contentSize = CGSizeMake(theScroll.contentSize.width, CGRectGetMaxY(label.frame)); 

記住,標籤的底部將是它的起源+它的高度,而不僅僅是它的高度。

+0

是的,我最終希望在標籤上添加一個標題,以便150留出足夠的空間。非常感謝你,它像一個魅力。所以這對於原點+高度是有意義的......它總是看起來像沒有顯示出一個特定的空間差距。 – Frank