iOS アプリケーションにグリッド (.NET の DataGridView と考えてください) を実装しようとしています。その行のデータの各列を表すいくつかのラベルがあるカスタム UITableViewCell サブクラスで UITableView を使用しています。私の質問は、デバイスの向きが変わった後にこれらのラベルの幅のサイズを変更することに関係しています。基本的には、縦方向にグリッド幅の 1/3 を占める列が、横方向に切り替えたときに幅の 1/3 を占めるように、比例してサイズを変更したいと考えています。
- (void)layoutSubviews
現在、UITableViewCell サブクラスのメソッドをオーバーライドすることでこれを実現しています。基本的に、iPad と iPhone の横長と縦長の比率をハードコーディングするだけです。ただし、これは、方向の変更に比例してグリッド自体のサイズが変更される場合にのみ機能し、常にそうであるとは限りません。
self.bounds.size.width
どのような場合でも機能する解決策を実現するために、layoutSubviews メソッドで使用することを考えましたが、マスクの自動サイズ変更がより良い解決策のようです。各 UILabel のマスクを に設定UIViewAutoResizingFlexibleWidth | UIViewAutoResizingFlexibleLeftMargin | UIViewAutoResizingFlexibleRightMargin
すると、探しているスケーリングのタイプを達成する必要があります。ただし、各ラベルの初期フレームを設定する方法がわかりません。layoutSubviews が呼び出されるまでセルの開始境界がわからない場合、最初にサブビューを配置するにはどうすればよいですか?