2017-02-16 15 views
0

私はUITableViewを持っているので、ピッカーを表示する必要があるので、テーブルのフレームの高さを短くし、同時に行をスクロールして表示します。UITableView - フレームのサイズ変更と行へのスクロール

私はこれを行う:(400の底制約距離を設定することにより)400個のピクセルの下余白を追加し、両方のコマンドが単独で動作する行

bottomConstraint.constant = 400 
tableview.scrollToRow(at: currentIndexPath, at: .bottom, animated: true) 

にスクロール(Iは、試験しました)。しかし、その結果、表が短くなり、選択された行が視覚的に表示されなくなります(たとえば行が最後の行の場合)。

実際には、制約が実際に更新される前にスクロールが処理されるため、制約が変更される前に行が表示されている場合は、表が短縮されるとスクロールしません。

アイデア?

+0

すべての制約定数を変更するには、view.layoutIfNeeded() –

答えて

1

制約を設定した後にself.view.layoutIfNeeded()に電話する必要があります。もう1つの選択肢は、その制約の変更をアニメーション化して、コンプリートハンドラでtableView.scroll...を呼び出すことです。ただし、制約をアニメーション化する方法は定数を設定し、アニメーションブロック内でlayoutIfNeededを呼び出すことなので、ビジュアル以外は基本的に同じことですタイミングの側面。

+0

layoutIfNeededを実行する必要があります。ありがとう –

関連する問題