2013-05-13 9 views
10

独自の.XIBと.hと.mを持つカスタムテーブルセルがあります。あまりにも派手ではない。デバイスが回転すると、セル幅は変化しません。インデックスパスのテーブルセルは呼び出されますが、幅は変更されません(たとえば、ポートレートからランドスケープへ)。何がこれを防ぐだろうか?IOSカスタムテーブルセルが方向変更の幅を自動的にリサイズしない

フレームサイズを手動で設定しないでください。

必要に応じてコードを投稿しますが、おそらくこのコードでコードに答えることができます。

アプリをランドスケープで起動しても、セルの幅は大きく設定されません。

[追加]

また非カスタムセルでは動作しません。

self.tableViewSelection.autoresizesSubviews = true; 
self.tableViewSelection.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight; 
self.view.autoresizesSubviews = true; 

テーブルのXIBのサイズが正しく設定されているようです(IOS6以外のサポート)。

+0

一部のスクリーンショットが役に立ちます。実際に何がサイズ変更されていないのかをここに伝えるのは難しいです。 – matt

+0

私は同意しますが、この質問は今は私の興味がなくなっています。モデレーターが望むなら、それを取り除くことができます。 – ort11

答えて

1

セルは自動的にテーブルビューと同じ幅になります。だから、サイズ変更されていないのはテーブルビューかもしれません。 iOS 6のデフォルトであるAutolayoutを使用する場合は適切な制約を与えるか、またはマスクの自動サイズ変更(そうでない場合)をして、デバイスの回転を補正するためにトップレベルビューのサイズ変更に応じてサイズを変更する必要があります。

+0

うん、それは起こったはずだった。このプロジェクトでは何らかの理由でそれを理解することはできません。運がないハードコードの上で試してみました。私は、セルの正確なサイズは、テーブルビュー(インデックスのセル)の後と前(セルが表示されます)で設定されていると仮定します。 – ort11

+0

ビットをリファクタリングして正常に動作しました。それが何だったかわからない。 – ort11

1

また、私はこの同じ問題に直面していましたが、回転中にカスタムセルを自動サイズ変更しました。戦った後、cell.contentViewへのサブビューとして私のビューを追加しているので、私は解決策をcell.contentViewの権限として得ました。

あなたがlayoutSubviewsまたは別のメソッドをオーバーライドしている場合、それはスーパーだ呼び出すことを忘れないでください:)

cell.contentView.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleLeftMargin | UIViewAutoresizingFlexibleRightMargin | UIViewAutoresizingFlexibleHeight | UIViewAutoresizingFlexibleTopMargin | UIViewAutoresizingFlexibleBottomMargin; 
+0

あなたの言ったことは正しいですが、自動サイズ変更マスクは次のように設定する必要があります:(UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight)私もあなたのコードで言及したのと同じ疑いがあったので、私はSOに質問を投稿しました。あなたは参照用にそれを見ることができます:http://stackoverflow.com/questions/7754851/autoresizing-masks-programmatically-vs-interfact -builder-xib-nib –

+0

このコードはSwift2としては動作しません。これらの定数はすべて、未解決の識別子になります。 – zeeple

7

を私は次のコードを使用し、私のコードは正常に動作します:

override func layoutSubviews() { 
    //... 

    super.layoutSubviews() 
} 

はやっていませんこれにより、直面している問題が発生します。

1

迅速2の場合、それは次のようになります。スイフト4で

cell.contentView.autoresizingMask = [.FlexibleWidth, .FlexibleHeight] 
0

、以下の作品。

cell.cellUIView.autoresizingMask = [.flexibleWidth, .flexibleHeight] 

注:cellUIView私は原型細胞のcontentViewに添加UIViewあります。

関連する問題