3

コントロールとレイアウトが異なるセルを含む主に UITableView である画面を作成しています。テーブルビューのセルを水平方向にスクロールできるポートレートモードに切り替えるまで、テーブルビューはうまく機能していました。セルが水平方向にスクロールすることはありません。縦のみ。画面に移動し、すでに縦向きモードになっていると、横向きになってから縦向きに戻っても問題なく動作します。

注意すべき点は、iPad、ストーリーボード、自動レイアウトを使用していることと、UITableViewCell がカスタムであり、ペン先がないことです (ペン先を使用しようとしたときも同じことを行います)。すべてのコントロールとレイアウトの制約は、プログラムによって追加されます。内部にビューがあるカスタム ビュー コントローラーを使用しています。ビュー内には、テーブルビューとツールバーがあります。テーブルビューがカスタムビューコントローラーの直下になるようにビューを削除すると、正常に機能しますが、ツールバーを使用できません。

問題のトラブルシューティングに使用しているテスト コードを次に示します。

// Remove all existing subviews
for(UIView *subView in self.contentView.subviews)
{
    [subView removeFromSuperview];
}

UILabel *testLabel = [[UILabel alloc] init];
testLabel.text = @"Test";
[testLabel setTranslatesAutoresizingMaskIntoConstraints:NO];
self.contentView addSubview:testLabel];

NSDictionary *viewsDictionary = NSDictionaryOfVariableBindings(testLabel);
NSString *format = [NSString stringWithFormat:@"V:|-[testLabel]-|"];

NSArray *constraintsArray = [NSLayoutConstraint constraintsWithVisualFormat:format options:nil metrics:nil views:viewsDictionary];
//[self.contentView addConstraints:constraintsArray];

行のコメントを外して制約を追加するまで、スクロールは意図したとおりに機能します。このコードはカスタム セルのメソッド内にあり、セルがデキューされるたびに呼び出されます。ビジュアル形式を使用せずに、制約を個別に追加しようとしましたが、うまくいきませんでした。また、いくつかの調査を行い、セルから制約を削除して contentView に追加するコードを見つけましたが、それも役に立ちませんでした。

横向きモードから縦向きモードに変更するときに、セルが水平方向にスクロールしないようにするにはどうすればよいですか?

詳細情報: さらにデバッグを行った後、テーブル ビューのコンテンツ サイズが水平方向に縮小していないことがわかりました。幅は 1024 のままです。

4

0 に答える 0