5

私はこの問題についてたくさんググったが、答えがないようだ。だから私はあなたの何人かがこれに対処する方法を知っているかもしれないことを望んでいます。私はテーブルビューを備えたビューコントローラーを持っています。アニメーションでビューフレームを変更すると、テーブルビューに画面に収まらないほど多くのアイテムがあり、テーブルビューを下にスクロールした場合を除いて、すべてがうまくいきます。次に、ビューの高さを縮小すると、ビューは正しくアニメーション化されますが、テーブルビューはどういうわけか少し上にジャンプしてから、下にアニメーション化されます。

ビューを縮小しても、テーブルビューが下にスクロールされない場合(最後のセルが表示されている場合でも、半分より少し多いとしましょう)、正しくアニメーション化されます。

自動サイズ変更マスクのオンとオフを設定したり、現在の状態からアニメートしたりするなど、いくつかのことを試しましたが、それは役に立ちませんでした:/

では、何が問題になる可能性があるのでしょうか。

編集:

フレームを変更するために使用するコード

[UIView animateWithDuration:0.5
                          delay:0.0
                        options: UIViewAnimationCurveEaseOut
                     animations:^{

                         [_contView setFrame:CGRectMake(0, 0, 320, 420)];
                     } 
                     completion:^(BOOL finished){

                     }];
4

4 に答える 4

2

非常に詳細な説明と解決策が見つかるまで、なぜそれが起こったのかを一生理解できないことに気付く前に、私はこの同じバグとしばらく戦いました。

完全な記事はここで見つけることができます:http: //lists.apple.com/archives/cocoa-dev/2012/Apr/msg00341.html

簡単な解決策は、テーブルビューフレームの代わりにcontentInsetを変更することです。表示しているもの(キーボードまたは広告バナービューなど)の高さをcontentInset.bottomプロパティに追加するだけです。必要なサイズ変更に対応するために、スクロール領域が拡大されます。

この例では、テーブルビューの上に広告バナービューを表示していました。

UIEdgeInsets insets = myTable.contentInset;
insets.bottom += 50;   // 50px is the height of the ad banner view
myTable.contentInset = insets;
于 2012-12-20T05:45:27.127 に答える
1

以前は同様の問題があり、この回避策を実装しました(免責事項:これは現在未解決のiOSバグへのハックです):

// check if the table view is scrolled to the bottom
if (tableView.contentOffset.y + tableView.frame.size.height == tableView.contentSize.height) {
    // if it is, shift the table view contents up one pixel
    [tableView setContentOffset:CGPointMake(tableView.contentOffset.x, tableView.contentOffset.y - 1) animated:NO];
}

// call the animation block afterwards here

これはハックですが、1ピクセルの動きであるため、ユーザーには気づかれません。UITableViewには、下にスクロールした位置からのアニメーションに関して、いくつかのバグがあります(Appleにすでに報告されていますが、まだ解決されていません)。

于 2012-12-27T15:16:40.493 に答える
0

xcodeの右隅にあるxibからの自動サイズ変更を使用する必要があります...これは役立つと思います。ここに画像の説明を入力してください

于 2012-12-20T06:04:11.003 に答える
0

高さがゼロ以外のフッタービューをテーブルに追加してみてください。

于 2014-04-24T09:49:51.600 に答える