gpt4 book ai didi

ios - TableView UIImage 渲染问题

转载 作者:行者123 更新时间:2023-11-29 10:47:38 25 4
gpt4 key购买 nike

我的 tableView UIImages 遇到了渲染问题,想知道是否有人遇到过同样的问题并且知道如何解决它。

这是我的 cellForRowAtIndexPath

-(UITableViewCell *)tableView:(UITableView *)tableView
cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
cell.textLabel.text = exerciseDisplayName;
cell.textLabel.numberOfLines = 0;
cell.textLabel.lineBreakMode = NSLineBreakByWordWrapping;

[tableView setSeparatorInset:UIEdgeInsetsZero];

UtilityMethods *commonMethods = [[UtilityMethods alloc]init];

UIImage *rowImage = [commonMethods imageForRow:tempPlaceholder.bodyPart];

cell.imageView.image = rowImage;

return cell;

}

这是我的行高。

-(CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath                  
{
return 96;
}

enter image description here

表格中的图片有很多线条和波浪线。我想知道是否有人知道我可能需要将任何 UIImage 属性应用于我的图像以解决问题。增加表中行的高度以增加表行的高度为代价解决了这个问题。似乎有效的数字是 heightForRow 中的 128。使用 128 时,波浪线不太明显。现在我很确定这与 iOS 渲染图像的方式有关。我拍摄了图像并使用 Microsoft Paint 将其大小调整为 76x76 只是为了看看我是否会看到同样的问题,图像看起来很好,没有所有的波浪线。图像为 .png 格式。图片的原始尺寸为 1024x1024。我只是根据需要向下调整了它们的大小。如果有人对如何解决此问题有任何提示或建议,我将不胜感激。

最佳答案

您将需要将图像重新取样到您需要的大小。在狭小空间中查看大图像在 iOS 设备上看起来相当糟糕(大多数确实如此)。但是如果你使用内置函数来创建一个新的适当大小的 UIImage 一切看起来都会好得多。在显示时缩小 UIImage 总是比创建一个适当大小的新图像并显示它更糟糕。方法如下(taken from here) :

- (UIImage*)imageByScalingAndCroppingForSize:(CGSize)targetSize
{
UIImage *sourceImage = self;
UIImage *newImage = nil;
CGSize imageSize = sourceImage.size;
CGFloat width = imageSize.width;
CGFloat height = imageSize.height;
CGFloat targetWidth = targetSize.width;
CGFloat targetHeight = targetSize.height;
CGFloat scaleFactor = 0.0;
CGFloat scaledWidth = targetWidth;
CGFloat scaledHeight = targetHeight;
CGPoint thumbnailPoint = CGPointMake(0.0,0.0);

if (CGSizeEqualToSize(imageSize, targetSize) == NO)
{
CGFloat widthFactor = targetWidth / width;
CGFloat heightFactor = targetHeight / height;

if (widthFactor > heightFactor)
{
scaleFactor = widthFactor; // scale to fit height
}
else
{
scaleFactor = heightFactor; // scale to fit width
}

scaledWidth = width * scaleFactor;
scaledHeight = height * scaleFactor;

// center the image
if (widthFactor > heightFactor)
{
thumbnailPoint.y = (targetHeight - scaledHeight) * 0.5;
}
else
{
if (widthFactor < heightFactor)
{
thumbnailPoint.x = (targetWidth - scaledWidth) * 0.5;
}
}
}

UIGraphicsBeginImageContextWithOptions(targetSize, 0, NO); // this will crop

CGRect thumbnailRect = CGRectZero;
thumbnailRect.origin = thumbnailPoint;
thumbnailRect.size.width = scaledWidth;
thumbnailRect.size.height = scaledHeight;

[sourceImage drawInRect:thumbnailRect];

newImage = UIGraphicsGetImageFromCurrentImageContext();

if(newImage == nil)
{
NSLog(@"could not scale image");
}

//pop the context to get back to the default
UIGraphicsEndImageContext();

return newImage;
}

该函数的功能比您期望的要多一些,但您应该能够将其功能缩减为仅满足您的需要。

确保使用 UIGraphicsBeginImageContextWithOptions 函数而不是 UIGraphicsBeginImageContext 以便正确处理 Retina 显示,否则这会使您的图像比应有的更加模糊,并且您会还有第二个问题要处理。

关于ios - TableView UIImage 渲染问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21869230/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com