添加一个UILabel到的UITableViewCell - 文本被裁剪垂直

问题描述:

运行到一个问题,当我试图和一个UILabel添加到自定义的UITableViewCell。出于某种原因,框架根本没有受到尊重 - 当我尝试设置标签高度(通过CGRectMake)时,文本会垂直裁剪。换句话说,只有一半的文本正在显示。添加一个UILabel到的UITableViewCell - 文本被裁剪垂直

当我玩的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);; 
} 

} 
+0

它是剪裁的UILabel,还是UITableViewCell?也就是说,您的标签位于单元格底部并被裁剪,还是完全位于单元格中,但正在裁剪? – TomSwift 2011-03-01 17:21:54

+0

请发送一些代码 – 2011-03-01 17:32:11

+0

发布代码让我意识到 - 这是导致问题的描述。我将它添加到我已添加的日期字段的顶部,因此它看起来正在被剪辑。 – nazbot 2011-03-01 17:38:03

首先,你应该更加注意内存管理。您需要拨打UILabels致电release。 原因是,为什么你的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; 
} 
+0

是的,这不是生产代码 - 我只是在测试东西。坏习惯,但它是一个副项目,所以嘿。 – nazbot 2011-06-07 16:02:06