在UITableViewCell中叠加textLabel和UIImageView

时间:2014-01-09 19:04:34

标签: ios objective-c uitableview uiimageview uiimage

我在将textLabel和detailTextLabel定位到自定义UITableViewCell时遇到问题,该UITmageView会在textLabel和detailTextLabel后面出现UIImageView。

参考图片 - 它会更有意义 - >您正在寻找一个UITableView,其中每个气泡代表一个不同的UITableViewCell。

enter image description here

基本上,我试图通过扩展气泡尺寸将textLabel和detailTextLabel放入您看到的气泡中。但是,无论我尝试什么,即使我更改UIImageView框架或边界或contentMode,气泡也不会改变它的宽度和高度。

以下是cellForRowAtIndexPath中的相关代码:

//Set font and style        
cell.textLabel.backgroundColor = [UIColor clearColor];
cell.detailTextLabel.backgroundColor = [UIColor clearColor];    

// Assign our own background image for the cell
UIImage *cellBackgroundImage = [UIImage imageNamed:@"Chat.png"];

UIImageView *cellBackgroundImageView = [[UIImageView alloc] initWithImage:cellBackgroundImage];
//[cellBackgroundImageView setBounds:CGRectMake(0, 0, 20, 20)];
//[cellBackgroundImageView setImage:cellBackgroundImage];

//cellBackgroundImageView.frame = CGRectMake(cellBackgroundImageView.frame.origin.x,         cellBackgroundImageView.frame.origin.y, 20, 20);
//cellBackgroundImageView.bounds = CGRectMake(cellBackgroundImageView.frame.origin.x, cellBackgroundImageView.frame.origin.y, 0, 0);
cellBackgroundImageView.contentMode = UIViewContentModeScaleAspectFill;

cellBackgroundImageView.image = cellBackgroundImage;
cell.backgroundView = cellBackgroundImageView;

任何帮助将不胜感激。

2 个答案:

答案 0 :(得分:0)

这里不要这样做,我是通过在自定义单元格类的LayoutSubviews方法中编写图像框架和标签来实现的。

只需 - (无效)layoutSubviews {setframe:用于两个UI组件}

答案 1 :(得分:0)

不要使用Aspect FIll,使用scaleToFill,或使用imageCapInsets将图像设置为图像视图。

- (UIImage *)resizableImageWithCapInsets:(UIEdgeInsets)capInsets resizingMode:(UIImageResizingMode)resizingMode

对于你的形象,它必须像

UIImage *cellBackgroundImage = [[UIImage imageNamed:@"Chat.png"] resizableImageWithCapInsets:UIEdgeInsetsMake(20, 70, 40, 20) resizingMode:UIImageResizingModeStretch]