在自定义UITableViewCell中动态更改UILabel帧

时间:2012-03-07 14:47:24

标签: iphone objective-c ios xcode uitableview

我编写了一个UITableViewcell的子类,它由各种UILabel组成,我已经定义了UIlabel的样式

  
      
  • (id)initWithStyle:(UITableViewCellStyle)样式reuseIdentifier:(NSString *)reuseIdentifier
  •   

中标签的框架矩形
  
      
  • (无效)layoutSubviews
  •   

现在在为UILabels定义静态rect之后,我想修改UILabels的rect,并编写一个函数来修改框架标签,但调用此函数不会修改UILabels的框架。如果有人知道如何实现标签的动态框架,请分享。

1 个答案:

答案 0 :(得分:0)

我通常通过实现自定义tableviewcell并在子视图中实现我自己的drawRect方法来指定标签的大小,如下所示:

@implementation CompositeSubviewBasedRestaurantCellContentView

- (id)initWithFrame:(CGRect)frame cell:(RestaurantCell *)cell
{
    if (self = [super initWithFrame:frame]) {
        _cell = cell;

        self.opaque = YES;
        self.backgroundColor = _cell.backgroundColor;
    }

    return self;
}
- (void)drawRect:(CGRect)rect
{
    _highlighted ? [[UIColor whiteColor] set] : [[UIColor blackColor] set];
    [_cell.name drawAtPoint:CGPointMake(11.0, 22.0) withFont:[UIFont boldSystemFontOfSize:17.0]];
}

我认为Apple的例子非常好,例如Table View Suite:

https://developer.apple.com/library/ios/#samplecode/TableViewSuite/Introduction/Intro.html#//apple_ref/doc/uid/DTS40007318