4

私はこれをかなり調べましたが、解決策を見つけることができませんでした。

UIView内に呼び出されたUIScrollViewがあります。これをpagingEnabledモードで使用しています。の中には、プログラムで作成された3つの異なるビューがあります。これらの3つの異なるビューの中には、たくさんのもの(UILabel、UITextViewなど)があります。すべてのビューの内容は動的であり、実行時に決定されます。したがって、私は本当に知りません。このコンテンツサイズを指定すると、ユーザーが下にスクロールしたときに、画面の下部に白い空白の画面が表示されることがあります。私の質問は:?たとえば、1ページ目:scrollViewscrollViewscrollViewscrollView.contentSizescrollViewCan i set the content size dynamically for each single page of this scrollView

self.scrollViewNews.contentSize = CGSizeMake(constant1,constant2);

また、2ページにも何か別のものを設定します。

4

5 に答える 5

3

contentSizeページングサイズとの違いについて混乱していると思います。ページングサイズは常にscrollView境界のサイズであり、他の方法で設定できるプロパティではありません。つまり、左/右にスワイプすると、スクロールビューの幅だけ「ページング」されます。

contentSizeスクロールビュー内のすべてのサブビューの仮想バウンディングボックスのサイズです。これは、scrollviewがスクロールする距離を制限するためだけに機能し、ページングの場合は、ページングする回数を制限しますcontentSize.width / bounds.size.width

scrollViewがズームイン/ズームアウトされていないと仮定すると(zoomScale = 1.0)、仮想の「ページ境界」にサブビューを配置してサイズを変更する必要があります。それらは、ページ境界全体を占める(scrollview.boundsに一致するサイズにする)か、挿入することができます。より大きな/より小さなコンテンツがある場合は、そのコンテンツのスケールを変更するか、ページの境界内でサイズを拡大/縮小するかを決定する必要があります。

于 2012-08-15T14:28:30.617 に答える
1

現在のコンテンツから実際のコンテンツサイズを取得してみてください。

コンテンツは、から継承されたクラスである必要がありUIViewframe.size.widthandframe.size.heightプロパティがあります。

これらを使用して、コンテンツをに追加するときに、現在のコンテンツのを設定できcontentSizeます。UIScrollviewUIScrollView

于 2012-08-15T11:39:41.710 に答える
1

はい、scrollViewのコンテンツサイズを動的に設定できます。また、次の方法を使用できます。

self.scrollViewNews.contentSize = CGSizeMake(constant1,constant2); 

この方法に問題はありません。scrollViewのcontentSizeの高さをコンテンツよりも大きい値に設定しているため、下部に空白が表示されています。それが問題です。内容に合わせて高さを調整すると、余白がなくなります。

于 2012-08-15T09:32:55.633 に答える
0

うん。scrollViewサイズを動的に設定できます

scroller.contentSize = CGSizeMake(1650, 2000);

次のプロパティを使用して、各ページの動的フレームを設定できます

[urScrollView scrollRectToVisible:frame animated:YES];

スクロールビューにpagingEnabled=YESを使用している場合

以下のUIScrollViewDelegateデリゲートは、ページとコンテンツを調整します

-(void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView{

    int page = urScrollView.contentOffset.x/urScrollView.frame.size.width;
    pageControl.currentPage = page;
}

//pager action
- (IBAction)changePage:(id)sender{

    int page = pageControl.currentPage;
    CGRect frame = urScrollView.frame;
    frame.origin.x = frame.size.width * page;
    frame.origin.y  = 0;
    [urScrollView scrollRectToVisible:frame animated:YES];
}

このサンプルアプリを見てください

于 2012-08-15T09:35:17.787 に答える
0

これを試してみてください。

- (void)viewDidLoad
{
    float sizeOfContent = 0;
    UIView *lLast = [scrollView.subviews lastObject];
    NSInteger wd = lLast.frame.origin.y;
    NSInteger ht = lLast.frame.size.height;

    sizeOfContent = wd+ht;

    scrollView.contentSize = CGSizeMake(scrollView.frame.size.width, sizeOfContent);
}
于 2013-02-13T11:44:18.177 に答える