1

UITableViewCell内にプログラムで配置されているサブビューのサイズを設定するにはどうすればよいですか?

セルの一部にカスタム UIView として実装されている多数の行 (動的) が含まれるカスタム (サブクラス化) UITableViewCell があります。アイデアは、カスタム ビュー (アイテムの行) を作成し、UITableViewCell が layoutSubviews にヒットすると、(a) 再配置を設定し、(b) ループして各行で「layoutSubviews」を呼び出すことです。行に使用しているカスタム UIViews。

質問- カスタム UIView 行のサイズ/位置を正しく設定する方法がわかりません。カスタム UIView layoutSubviews メソッド内で、x、y、幅、高さを決定して配置できるようにするにはどうすればよいですか?

たとえば、UITableCellViewのlayoutSubviewsメソッド内で手動ですべての行をループし、それらのカスタムメソッドを呼び出して、必要な位置/幅/高さを渡す必要がありますか? 次に、カスタムUIView行のlayoutSubviewメソッドがヒットすると、これらの値を使用するためにこれらの値を格納したインスタンス変数を検索することがわかりますか?

うまくいけば、これは理にかなっています。

構造は次のとおりです。

動的カスタム UITableCellView (サブクラス化)

  • heightForRowAtIndexPath で動的に rowHeight を決定します
  • layoutSubviews では、(私が持っているカスタム UIView の) サブビューのループを含み、これらのそれぞれで layoutSubview を呼び出します

カスタムUIView(UILabelなどのアイテムの行を表す)

  • layoutSubview で - 質問: このサブビューのフレームのサイズをどのように設定しますか?
  • フレームの x、y は 0,0 にすべきだと思いますか?
  • 幅/高さについては、設定するスーパービュー領域のフルサイズをどのように取得しますか?
  • スーパービューは、layoutSubviews の前にこの情報をスーパービューに渡す必要がありますか?
4

2 に答える 2

1

tableViewCell サブクラスの一部として追加されたビューは、セル フレームに対して相対的に配置されます。つまり、サブビューの原点の x:0,y:0 は、tableCell の左上隅になります。始めるには、このようなもので十分です。

CGRect frame =[self frame];
frame.size.height=20.0f;
frame.origin.x=(self.frame.size.height/2)-frame.size.height;
frame.origin.y=0.0f;
[subview setFrame:frame];
于 2011-03-23T21:36:48.310 に答える