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