2011-12-17 4 views
0

私は単純なUITableViewControllerサブクラスをいくつか持っています(UITableViewCell)。私は各セルでimageViewとtextLabelを使用しています。UITableViewCellのtextLabelフレームがデバイスローテーションのために変更されないようにする

デバイスをポートレート/ランドスケープに/から回転させると、textLabelのフレームが変更されます。この変更は縦方向から横方向の回転では問題ありません。しかし、風景から肖像画に戻って回転するとき、フレームは「間違った」値(テキストは不適切に正当化されます)に変わります。

どうすればこの問題を解決できますか?

私はimageViewsのフレームが変化するのと同様の問題がありました。私はUITableViewCellをサブクラス化し、正しい値にフレームを設定することでこれを解決しましたlayoutSubviews。ここに覚えておく必要があるのはCGRectという値が1つだけです(私はハードコードしています)。

textLabelは異なります:私は2つのフレーム(各方向に1つ)を追跡する必要があり、フレーム値はtextLabelのテキストに依存すると思います。したがって、サブクラスUITableViewCellに2つのCGRectインスタンス変数を追加することはオプションです。しかし、もっと簡単な解決法があると思います。

答えて

0

cell.textLabel.numberOfLines = 0;cellForRowAtIndexPathにありました。 numberOfLinesを3に設定すると問題が解決しました。

また、self.textLabel.frame.origin.xをlayoutSubviewsのハードコード値に設定する必要がありました。

ここで何が起こっているのか完全に理解しているかどうかはわかりません。