0

ナビゲーション ビューがあり、2 番目のビューには custom を含むテーブルが含まれますUITableViewCell

2 つの問題があります

  1. アプリケーションを水平方向 (2 番目のビューに移動) で開こうとしてから、縦向きモードでデバイスを回転させようとすると、テーブル ビュー部分にスクロールが表示されます。

  2. 2番目のビュー(ナビゲーション)を縦向きで開き、デバイスを水平に回転させてスワイプして削除ボタンを取得しようとすると、特に水平方向では機能しません。

  3. 削除ボタンがラベルを覆っている

私は、カスタムを使用しましたUITableViewCell, AutoLayout and Storyboards

参照リンク用にプロジェクトもアップロードしました

前もって感謝します。!!

4

1 に答える 1

1

あなたが説明したすべての問題は、レイアウトの悪さが原因です。あなたのプロジェクトをダウンロードして修正しました。私がやったこと:1.自動レイアウトを無効にしました。簡単にするためにそうしました。これはおそらく自動レイアウトでも実行できますが、この場合は自動レイアウトを使用しない方がはるかに簡単です。2. テーブル ビューとトップ ラベルの自動サイズ変更を修正しました。3. テーブル ビュー セルのラベルの自動サイズ変更を修正しました。これにより、削除ボタンの問題が修正されます。

修正されたプロジェクトは、ここからダウンロードできます。

編集:自動レイアウトを使用する場合は、この回答 で説明されているようにカスタム コードを記述する必要があります。

NSDictionary *dict = NSDictionaryOfVariableBindings(myLabel2);
[cell.contentView addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"H:[myLabel2]|" options:0 metrics:nil views:dict]];

私はあなたのプロジェクトでコードをチェックしましたが、うまくいきました。自動レイアウト バージョンは、ここからダウンロードできます。

編集 2: 回転の問題を修正するには、インターフェイスの向きを変更した後にテーブル ビューをリロードするだけです。

- (void)didRotateFromInterfaceOrientation:(UIInterfaceOrientation)fromInterfaceOrientation {
    [super didRotateFromInterfaceOrientation:fromInterfaceOrientation];
    UITableView *tv = (UITableView *)[self.view viewWithTag:200];
    [tv reloadData];
}

ここでチェックしてください

于 2013-08-19T16:41:27.223 に答える