8

UIViewControllerInterface Builder に があり、 に を追加しUIScrollViewますUIViewcontentOffset0.0 に等しいプロパティがありますが、一番下までスクロールしてUIScrollView別のビューをプッシュすると、contentOffset変更が発生します。

NSLog次の値が得られます。

//View just loaded
2013-09-09 16:19:27.455 my_app[24588:907] Scroll View content offset is 0.000000

//We came back from another view
2013-09-09 16:19:30.957 my_app[24588:907] Scroll View content offset is 108.000000

この動作の理由は何ですか? IB にa を追加したばかりUIScrollViewで、コードでは何もしませんでした。

scrollViewのcontentHeightが より大きいですself.view.heightframescrollView の は同じままです。

4

6 に答える 6

12

iOS 7/8の場合self.automaticallyAdjustsScrollViewInsets = NO;、問題は解決しました。

于 2014-02-06T07:45:08.597 に答える
3

スクロールビューが存在する画面を離れて戻ってくると、画面のサイズの半分が上または左、またはその両方に追加されます。空白、望まないもの。私の場合、ページングが混乱し、スクロールを CGPointZero にプログラムまたはタッチでユーザーとして配置するまで、正しく機能しません。電話NSLog( @"%f", scrollview.contentSize.height );してviewDidLayoutSubviewsみると、サイズが変わっていることがわかります。

オフセット値がゼロでない軸で発生します。したがって、それを解決するには、表示されるCGPointZero前にゼロに設定する必要があります。

@Steph Sharpビューコントローラーをポップアップとして開く場合を除いて、答えは私の問題を解決します()presentViewController。バグ量を追加して値を補正しようとしましたviewDidLayoutSubviewsが、ページングにバグが発生します。

短い答え、私は次のようになります:

- (void) viewDidLayoutSubviews
{
    [super viewDidLayoutSubviews];
    scrollView.contentOffset = previousPoint;
}

- (void) viewWillAppear:(BOOL)animated
{
    scrollView.contentOffset = CGPointZero;
}

- (void) viewWillDisappear:(BOOL)animated
{
    previousPoint = scrollView.contentOffset;
    scrollView.contentOffset = CGPointZero;
}

セクションを離れるとき、または上のポップアップを開いたときに機能するようになりました。

于 2015-05-15T18:46:34.153 に答える
3

viewControllerを閉じた後、tableViewのcontentOffsetが(0、-64)に変更されました。

私の解決策は少し奇妙でした。他のすべての回答を試しましたが、成功しませんでした。問題を解決した唯一のことは、.xib のコントロール ツリーで tableView の位置を切り替えることでした。

次のような親ビューの最初のコントロールでした。

前

ImageViewの直後にtableViewを移動したところ、うまくいきました:

後

テーブルビューを最初の位置に配置すると問題が発生し、テーブルビューを別の位置に移動すると問題が解決したようです。

PD 私は autoLayout もストーリーボードも使用していません

これが誰かを助けることができることを願っています!

于 2014-04-11T17:13:19.880 に答える