最初にテーブル ビュー セクションが続き、UIView (IBOutlet _myView にバインド) が続き、内部にいくつかのコントロール (たとえば、UITextField、IBOutlet _durationField にバインド) がある UITableView があります。これはすべてストーリーボードで行われます。その _durationField を動的に移動したいので、中心またはフレームのプロパティを変更する必要があります。ただし、viewDidLoad 内の次のコードはゼロ値を返します。
CGRect durationRect = _durationField.frame;
一方、TableCell および _myView フレーム プロパティ内のラベルは実際の値を返します。たとえば、これはゼロを返しません。
CGRect viewRect = _myView.frame;
また、_durationField の frame プロパティを変更しても UI に反映されません。コード内の IBOutlet に適切にバインドされていますが、実際には _myView 内のすべてのコントロールに対してゼロの値を取得します。さらに、viewDidLoad で _durationField.text を設定でき、正常に動作します。
何か案は?シンプルなものが欠けているようです。
viewWillLayoutSubviewsを使用した最初の提案された解決策では、実際に要素を移動できますが、ビューがレンダリングされた後にのみです。したがって、ユーザーはそれがどのように動いているかを見ることができます。これは望ましい動作ではありません。ビューがレンダリングされる前に要素を動的に移動したいと思います。