2016-05-01 8 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実際には、ビューの' bounds'に基づいていて、 'frame'には基づいてはいけません。 'initWithFrame:self.view.bounds'です。ビューの原点が0,0でないときは、その違いがはっきりします。 – rmaddy

答えて

0

2つのことは正しく見えません。

  1. ラベルorigin.y150に設定しました。スクロールビューのコンテンツ領域の上部からラベルを開始することを意味しましたか?
  2. スクロールビューのcontentSize.heightをラベルの高さと同じに設定します。これは#1と矛盾します。 contentSize.heightはすべてのコンテンツに十分な大きさでなければなりません。

と仮定すると、#1が正しいか、#2のように設定する必要があります。

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

は覚えておいて、ラベルの下には、その起源+その高さだけでなく、その高さになります。

+0

はい、結局ラベルの上にタイトルを追加して、150がちょうど十分なスペースを残すようにします。大変ありがとうございます。魅力的に機能しました。だから起源+高さについては意味がある...それは、常にスペースの特定のギャップが表示されていないように見えた。 – Frank

関連する問題