将UILabel添加到UiTableViewCell - 正在垂直裁剪文本

时间:2011-03-01 17:18:06

标签: objective-c uitableview

尝试将UILabel添加到自定义UITableViewCell时遇到问题。由于某种原因,帧根本没有得到尊重 - 当我尝试设置标签高度(通过CGRectMake)时,文本被垂直裁剪。换句话说,只显示了一半的文字。

当我使用CGRectMake的帧高时,它会显示一些奇怪的行为 - 有时较低的值实际上会使事情正确对齐。

我设置了错误的值吗?框架是否是要修改的错误属性?

编辑代码:

- (id)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier {
if ((self = [super initWithStyle:style reuseIdentifier:reuseIdentifier])) {
    // Initialization code
    eventName = [[UILabel alloc] initWithFrame:CGRectZero];
    //eventName.backgroundColor = [UIColor blueColor];
    eventName.numberOfLines = 2;
    eventName.minimumFontSize = 8.;
    eventName.adjustsFontSizeToFitWidth = YES;
    eventName.text = @"Event Name";
    [self.contentView addSubview:eventName];

    eventStartEndDate = [[UILabel alloc] initWithFrame:CGRectZero];
    eventStartEndDate.backgroundColor = [UIColor blueColor];
    eventStartEndDate.text = @"Event Start and End Dates";
    [self.contentView addSubview:eventStartEndDate];

    description = [[UILabel alloc] initWithFrame:CGRectMake(10.0, 30.0, 300.0, 20.0)];
    [self.contentView addSubview:description];


}
return self;
}

-(void)layoutSubviews
{
[super layoutSubviews];

if (!self.editing) {
    eventName.frame = CGRectMake(10.0, 10.0, 300.0, 20.0);
    eventStartEndDate.frame = CGRectMake(10.0, 35.0, 300.0, 20.0);;
}

}

1 个答案:

答案 0 :(得分:0)

首先,您应该更加关注内存管理。您必须在release上致电UILabels。 原因,为什么UILabels有时看起来被裁剪,因为您的其他标签确实有白色不透明的背景。将backgroundColor属性设置为[UIColor clearColor]就可以了。

- (id)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier
{
    self = [super initWithStyle:style reuseIdentifier:reuseIdentifier];
    if (self) {
        eventName = [[UILabel alloc] initWithFrame:CGRectZero];
        //eventName.backgroundColor = [UIColor blueColor];
        eventName.numberOfLines = 2;
        eventName.minimumFontSize = 8.;
        eventName.adjustsFontSizeToFitWidth = YES;
        eventName.text = @"Event Name";
        eventName.backgroundColor = [UIColor clearColor];
        [self.contentView addSubview:eventName];
        [eventName release];

        eventStartEndDate = [[UILabel alloc] initWithFrame:CGRectZero];
        eventStartEndDate.backgroundColor = [UIColor blueColor];
        eventStartEndDate.text = @"Event Start and End Dates";
        [self.contentView addSubview:eventStartEndDate];
        [eventStartEndDate release];

        description = [[UILabel alloc] initWithFrame:CGRectMake(10.0, 30.0, 300.0, 20.0)];
        description.backgroundColor = [UIColor clearColor];
        [self.contentView addSubview:description];
        [description release];
    }
    return self;
}