2

我正在尝试为应用程序复制 Facebook 的新闻提要,并将具有应显示的图像。图像将有多种尺寸,那么我应该如何正确缩放它们以适应单元格而不看起来很奇怪?

该单元格包含一个 UIButton,然后将图像设置为它。我正在使用一个按钮,因为我想在按下它时打开全尺寸图像。如果用点击手势更改为 UIImageView 更好,我也可以这样做,只是认为按钮更简单。

想法?

4

4 回答 4

0
+ (UIImage *)imageWithImage:(UIImage *)image scaledToSize:(CGSize)newSize {

UIGraphicsBeginImageContextWithOptions(newSize, NO, 0.0);
[image drawInRect:CGRectMake(0, 0, newSize.width, newSize.height)];
UIImage *newImage = UIGraphicsGetImageFromCurrentImageContext();    
UIGraphicsEndImageContext();
return newImage;

}

使用它根据大小缩放图像。

于 2013-02-19T20:04:18.913 回答
0

我假设您将使用 aUITableView来显示这些图像。

这将在您滚动表格视图时产生问题,因为图像会随着行的加载而调整大小,并且需要太多的处理时间,从而导致滚动不流畅。

有两种方法可以解决这个问题:

  1. 在创建全尺寸图像时创建适当大小的图像,并以这种方式将它们保存到磁盘。如果这些是静态照片,那么您将在图像编辑程序(即 Photoshop)中创建缩略图,并将它们与全分辨率照片一起包含在内。如果照片是动态下载/生成的,那么您需要在保存全尺寸图像时创建较小的版本。这实际上比听起来更复杂,如果这是您需要走的路线,我可以提供一些代码。关键是在加载 tableview 行时您不需要调整图像大小,从而节省大量时间。

  2. 在后台线程中调整图像大小,并在处理完成时将它们添加到表视图行中。这样做的例子很多,包括来自 Apple 的以下示例项目: https ://developer.apple.com/library/ios/#samplecode/LazyTableImages/Introduction/Intro.html

最好的表现是两者都做,但根据我的经验,真正需要的只是其中之一。

于 2013-02-19T22:35:40.123 回答
0

您可以[CGAffineTransformMakeScale][1]在 Quartz 2D 框架中非常轻松地缩放视图。

#define X_SCALE_FACTOR 2.5
#define Y_SCALE_FACTOR 2.5
UIImageView *imageView = [[UIImageView alloc]initWithImage:[UIImage imageNamed:@"myimage.png"]];
imageView.transform = CGAffineTransformMakeScale(X_SCALE_FACTOR, Y_SCALE_FACTOR);
于 2013-08-30T04:26:59.257 回答
0

为什么不通过 UIImageView 的内置函数处理所有图像大小,然后在它们上面放置一个与它们相同大小(框架)的透明按钮......(*要使 UIButton 透明,只需清除背景颜色和按钮类型Custom(我认为默认是圆角矩形什么的)

另一方面,如果您只想检测对 UIImageView 的点击而不在图像上放置透明的 UIButton,只需使用 touchesBegan 并检测触摸是否在数组中的 UIImage 上。

于 2013-02-19T22:39:55.223 回答