我似乎无法将此imageview添加到我的自定义uitableviewcell类中,我无法弄明白。这是我的代码:
- (id)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier
{
self = [super initWithStyle:style reuseIdentifier:reuseIdentifier];
if (self) {
// Initialization code
[self layoutCell];
}
return self;
}
- (void)layoutCell
{
self.videoImageView = [[UIImageView alloc] initWithFrame:CGRectMake(5, 5, 310, 120)];
[self.videoImageView setImage:[UIImage imageNamed:@"myImage.jpg"]];
[self.contentView addSubview:self.imageView];
}
在调试器中,我注意到,一旦我将imageview添加为contentview的子视图,如果有帮助,框架将被重新分配给(0,0,0,0)。我真的不知道最近会发生什么。如果有人有任何建议,那将是很棒的。我也尝试将imageview直接添加到单元格的视图本身,但无济于事。 (而且我非常肯定那是错的)。
Tahnks!
答案 0 :(得分:2)
您不应该在init
单元格方法中设置图像。你需要将它分开。
答案 1 :(得分:0)
实施layoutSubviews
方法并检查这是否有所不同。它应该解决这个问题。
- (void)layoutSubviews
{
videoImageView.frame = CGRectMake(5, 5, 310, 120);
}
<强>更新强>
尝试从layoutCell
方法更改init
方法。而是在tableview的[cell layoutCell]
方法中将其称为cellForRowAtIndexPath
。这将确保即使在重新加载时调用dequeureuse,它也会正确设置UIImage和frame。您只需在self.videoImageView = [[UIImageView alloc] initWithFrame:CGRectMake(5, 5, 310, 120)] ;
方法中添加init
即可。
- (id)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier
{
self = [super initWithStyle:style reuseIdentifier:reuseIdentifier];
if (self) {
// Initialization code
self.videoImageView = [[[UIImageView alloc] initWithFrame:CGRectMake(5, 5, 310, 120)] autorelease]; //no need of autorelease if ARC is used
}
return self;
}
- (void)layoutCell
{
self.videoImageView.frame = CGRectMake(5, 5, 310, 120);
[self.videoImageView setImage:[UIImage imageNamed:@"myImage.jpg"]];
[self.contentView addSubview:self.videoImageView];
}
在cellForRowAtIndexPath
,
//create cell
[cell layoutCell];
return cell;
答案 2 :(得分:0)
您分配self.videoImageView,然后将self.imageView添加到contentView(似乎是错误输入)。您也可以像其他人一样建议将您的UI init方法移动到initWithStyle之外的其他位置。这会有所帮助。