添加一个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);;
}
}
答
首先,你应该更加注意内存管理。您需要拨打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
它是剪裁的UILabel,还是UITableViewCell?也就是说,您的标签位于单元格底部并被裁剪,还是完全位于单元格中,但正在裁剪? – TomSwift 2011-03-01 17:21:54
请发送一些代码 – 2011-03-01 17:32:11
发布代码让我意识到 - 这是导致问题的描述。我将它添加到我已添加的日期字段的顶部,因此它看起来正在被剪辑。 – nazbot 2011-03-01 17:38:03