我如何设置自定义UIView的大小/位置,以便将其放置在自定义的UITableViewCell中?

我如何设置一个子视图的大小是以编程方式放置在UITableViewCell中?

我有一个自定义(subclassed)的UITableViewCell,其中的一部分单元格包含一些行(dynamic),这是作为一个自定义的UIView实现的。 这个想法是创build自定义视图(这是一个项目的行),然后当UITableViewCell命中layoutSubviews它将(a)设置自己重新定位和(b)循环,并调用“layoutSubviews”的每一行它用于行的自定义UIViews。

问题 – 我不知道如何正确设置自定义UIView行的大小/位置? 我如何,在自定义UIView layoutSubviews方法,确定其x,y,宽度,高度,所以我可以定位它?

我是否真的需要手动,在UITableCellView的layoutSubviews方法中,循环遍历所有行,并调用它们的自定义方法来传递它们的位置/宽度/高度,他们将需要在? 然后,当自定义的UIView行的layoutSubview方法被击中,它会知道要查找它的实例variables存储这些值来使用它们?

希望这是有道理的。

结构是:

dynamic自定义UITableCellView(分类)

  • 在heightForRowAtIndexPath中dynamic确定rowHeight
  • 在layoutSubviews它包括循环子视图(自定义UIView我有),并调用layoutSubview每个这些

在自定义的UIView(它表示一行项目,例如UILabel)

  • 在layoutSubview – 问题:如何设置这个子视图的框架的大小?
  • 我认为框架的x,y应该是0,0?
  • 对于宽度/高度,您如何获得应该设置的超视图区域的全尺寸?
  • superview是否应该在layoutSubviews之前将这些信息传递给它?

作为tableViewCell子类的一部分添加的任何视图都是相对于单元格框架定位的,即子视图原点的x:0,y:0将位于tableCell的左上angular。 像这样的东西应该足以让你开始。

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]; 

您可以使用resize的方法将一个类别添加到UIView。

UIView的+ ResizeMethods.h

 - (void) setHeight: (CGFloat) height; - (void) setWidth: (CGFloat) width; - (void) setTop: (CGFloat) top; - (void) setLeft: (CGFloat) left; 

UIView的+ ResizeMethods.m

 - (void) setHeight: (CGFloat) height { CGRect frame = self.frame; frame.size.height = height; self.frame = frame; } - (void) setWidth: (CGFloat) width { CGRect frame = self.frame; frame.size.width = width; self.frame = frame; } - (void) setTop: (CGFloat) top { CGRect frame = self.frame; frame.origin.y = top; self.frame = frame; } - (void) setLeft: (CGFloat) left { CGRect frame = self.frame; frame.origin.x = left; self.frame = frame; }