1

デフォルトの高さ 1717px のデータを含むがUIScrollviewあります。実行時に、高さがそれぞれ 540px のサブビューを 1 つ以上追加する必要があります。それらのうちの何個を追加する必要があるかは、事前に不明です。

これらをメソッドのスクロールビューに追加してから、正しい値にviewdidload設定します。contentsizeまた、contentsize を必要な値に設定します。メソッドの最後にログに記録すると、すべて問題なく、contentsizeまだ正しいです。

表示されるcontentsizeと 1717px に戻りますが、コンテンツはまだそこにあります。の通常の範囲を超えてスクロールすると、追加されたコンテンツを一瞬表示できますuiscrollviewが、その後元に戻ります。

私の関連部分viewdidloadは以下です

NSArray *sortDescriptors = [NSArray arrayWithObject:[NSSortDescriptor sortDescriptorWithKey:@"counter" ascending:YES]];
for (Facade * f in [self.inspection.facades sortedArrayUsingDescriptors:sortDescriptors]) {
    NSArray *subviewArray = [[NSBundle mainBundle] loadNibNamed:@"facadeView" owner:self options:nil];
    facadeView *facadeInfo = [subviewArray objectAtIndex:0];
    facadeInfo.facade = f;
    facadeInfo.frame = CGRectMake(0, self.scrollView.frame.size.height, facadeInfo.frame.size.width, facadeInfo.frame.size.height);
    self.scrollView.contentSize = CGSizeMake(self.scrollView.frame.size.width, self.scrollView.frame.size.height+facadeInfo.frame.size.height);
    self.scrollView.frame =  CGRectMake(0, 0, self.scrollView.frame.size.width, self.scrollView.frame.size.height+facadeInfo.frame.size.height);
    [self.scrollView addSubview:facadeInfo];
}
self.scrollView.frame = CGRectMake(0, 0, self.view.frame.size.width, self.view.frame.size.height);;
// now add our scroll view to the main view
[self.view addSubview:self.scrollView];

contentsize元の値にリセットされないようにするにはどうすればよいですか?

4

3 に答える 3

1

viewDidAppearの代わりにこのコードを試してくださいviewDidLoad

于 2013-12-17T10:15:54.127 に答える
0

おもう

self.scrollView.frame = CGRectMake(0, 0, self.scrollView.frame.size.width, self.scrollView.frame.size.height+facadeInfo.frame.size.height);

forループの内側が問題です。フレームサイズを大きくする必要はありません。そうすると、スクロールできなくなります。contentsize は、フレーム サイズよりも小さくする必要があります。そうでない場合、スクロール ビューをスクロールすることはできません。

于 2013-02-27T18:35:51.703 に答える
-1

autoLayout の問題です。自動レイアウトを無効にすると、問題なく動作します!!! :-)

于 2014-08-26T06:13:54.363 に答える