3

水平の UITableView を 90 度回転させて実装しています

horizontalShopsTableViewController.view.transform = CGAffineTransformMakeRotation(-M_PI/2);

次に、そのセルを 90 度回転させます。

cell.contentView.transform = CGAffineTransformMakeRotation(M_PI/2);

テーブルに柔軟な幅を持たせたい。柔軟に設定しないと、向きの変更後にすべてが正常に機能します。しかし、そうするとセルの中身がずれて消えてしまいます。テーブル ビューのフラグ「サブビューの自動サイズ変更」が false です。

ここに画像の説明を入力

何が問題を引き起こしているのか、またはどのような代替手段を使用できるかについてのアイデアはありますか?

4

2 に答える 2

4

OK、問題は、テーブルビューの幅が柔軟だったため、回転後にセルの幅 (実際の高さ) も増加したことです。UITableView をサブクラス化し、layoutSubviews メソッドをオーバーライドすることで問題を解決したので、次のようになりました。

- (void)layoutSubviews {

    [super layoutSubviews];

    for (UIView* child in [self subviews]) {

        CGRect frame1 = child.frame;
        if ([child isKindOfClass:[UITableViewCell class]]) {
            frame1.size.width = 120;
            child.frame = frame1;        
        } 
    }

}

とにかく、Autoresize Subviews を明示的に false に設定した場合、uitableview がセルのサイズを変更した理由はまだわかりません。

于 2012-05-31T07:28:10.277 に答える
1

うーん...何を達成しようとしているのですか?もちろん、自動サイズ変更システムはビューの変換を尊重しません。おそらく、手動でサイズを変更する必要があります。

でも、標準のスクロールビューではやりたいことができない!? 他の問題が発生するため、変換を使用して UI コンポーネントを回転させるのは最善の方法ではありません。

于 2012-05-30T15:55:49.213 に答える