自定义Tableview图像大小不正确

时间:2015-06-05 17:10:27

标签: ios objective-c uitableview

我正在创建一个自定义的tableview,其中包含我创建的自定义单元类。单元格工作完美,我在单元格上创建的UILabel正确匹配,但我所拥有的背景图像由于某种原因不会完全显示。当我使用iPhone 6模拟器时它会显示得很好,但是当我在iPhone 4s模拟器上运行它时看起来会被截断。

以下是我用来填充单元格值的代码:

static NSString * simpleTableIdentifier = @“PeeklyTableCell”;

    PeeklyTableCell *cell = (PeeklyTableCell *)[tableView dequeueReusableCellWithIdentifier:simpleTableIdentifier];
    if (cell == nil)
    {
        NSArray *nib = [[NSBundle mainBundle] loadNibNamed:@"PeeklyTableCell" owner:self options:nil];
        cell = [nib objectAtIndex:0];
    }
    cell.nameLabel.adjustsFontSizeToFitWidth = YES;
    cell.nameLabel.text = @"Group Title"; //Name of group label
     //Makes sure the font size readjusts size
    UIImageView *imageView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"testImage.jpg"]]; //Group label image
    imageView.frame = CGRectMake(0, 0, widthScreen, 80);
    imageView.center = imageView.superview.center;
    imageView.alpha = 1.0; //opacity of the cell
    cell.backgroundView = imageView; //setting the cell to be this image
    cell.pointsLabel.text = @"+1000"; //Group points label (Must add the + in front"
    cell.pointsLabel.adjustsFontSizeToFitWidth = YES; //Makes sure the font size readjusts the size

    return cell;

这是iPhone 4S上的外观截图。如果你不能说,背景图像应该稍微拉伸一点,它的最后一点被截断。此外,由于某种原因,细胞似乎没有接触左壁。

enter image description here

任何帮助都会很棒!感谢。

2 个答案:

答案 0 :(得分:0)

您首先设置imageView.center,然后将其设置为backgroundView。尝试如下:

imageView.alpha = 1.0; //opacity of the cell
cell.backgroundView = imageView; //setting the cell to be this image
imageView.center = imageView.superview.center;

答案 1 :(得分:0)

你有很多选择可以做到这一点。

首先编辑你的testImage.jpg并使其与实际尺寸(单元格)和分辨率(设备)相符合

示例:320px X 80px = testImage.jpg640px X 160px = testImage@2x.jpg

第二个是使用UIViewContentModeScaleAspectFillUIViewContentModeScaleAspectFit,具体取决于您的喜好..

UIImageView *image = [[UIImageView alloc] init];
image.contentMode = UIViewContentModeScaleAspectFill;
image.contentMode = UIViewContentModeScaleAspectFit;
image.clipsToBounds = YES;

第3次重新缩放图像以适应目标大小:

- (UIImage *)imageWithImage:(UIImage *)image scaleToSize:(CGSize)size
{
    UIGraphicsBeginImageContextWithOptions(size, NO, 0.0);
    [image drawInRect:CGRectMake(0, 0, size.width, size.height)];
    UIImage *newImage = UIGraphicsGetImageFromCurrentImageContext();
    UIGraphicsEndImageContext();

    return newImage;
}

并使用它:

UIImage *sampleImage = [UIImage imageNamed:@"testImage.jpg"];

imageView.image = [self imageWithImage:sampleImage scaleToSize:CGSizeMake(widthScreen, 80)];