我用的是同一个大的图像在的tableView和的DetailView。 需要做的ImageView填充40×40时imags中的tableView的表现,但在伸展屏幕的一半。 我打了几个属性,但没有积极的结果:
[cell.imageView setBounds:CGRectMake(0, 0, 50, 50)];
[cell.imageView setClipsToBounds:NO];
[cell.imageView setFrame:CGRectMake(0, 0, 50, 50)];
[cell.imageView setContentMode:UIViewContentModeScaleAspectFill];
我在“在预定义的样式小区对象”使用SDK 3.0版本。
我把本的代码作为我的NS-扩展文件的扩展名,这样我可以告诉任何图像,使自身的缩略图,如:
UIImage *bigImage = [UIImage imageNamed:@"yourImage.png"];
UIImage *thumb = [bigImage makeThumbnailOfSize:CGSizeMake(50,50)];
下面是.h文件中:
@interface UIImage (PhoenixMaster)
- (UIImage *) makeThumbnailOfSize:(CGSize)size;
@end
然后在NS-Extensions.m文件:
@implementation UIImage (PhoenixMaster)
- (UIImage *) makeThumbnailOfSize:(CGSize)size
{
UIGraphicsBeginImageContextWithOptions(size, NO, UIScreen.mainScreen.scale);
// draw scaled image into thumbnail context
[self drawInRect:CGRectMake(0, 0, size.width, size.height)];
UIImage *newThumbnail = UIGraphicsGetImageFromCurrentImageContext();
// pop the context
UIGraphicsEndImageContext();
if(newThumbnail == nil)
NSLog(@"could not scale image");
return newThumbnail;
}
@end
我缓存缩略图中使用,因为在飞行中按比例缩小大图像占用内存过多。
这里是我的缩略图代码:
- (UIImage *)thumbnailOfSize:(CGSize)size {
if( self.previewThumbnail )
return self.previewThumbnail; // returned cached thumbnail
UIGraphicsBeginImageContext(size);
// draw scaled image into thumbnail context
[self.preview drawInRect:CGRectMake(0, 0, size.width, size.height)];
UIImage *newThumbnail = UIGraphicsGetImageFromCurrentImageContext();
// pop the context
UIGraphicsEndImageContext();
if(newThumbnail == nil)
NSLog(@"could not scale image");
self.previewThumbnail = newThumbnail;
return self.previewThumbnail;
}
只要确保你正确地清除缓存缩略图,如果你改变你的原始图像(在我的情况self.preview)。
我有我的包裹在一个UIView,并使用此代码:
imageView.contentMode = UIViewContentModeScaleAspectFit;
imageView.autoresizingMask = UIViewAutoresizingFlexibleWidth |UIViewAutoresizingFlexibleHeight;
[self addSubview:imageView];
imageView.frame = self.bounds;
(个体经营是包装的UIView,与我想要的尺寸-我用AsyncImageView )。
我想生成缩略图的本·拉赫曼的建议提前,而不是在飞行很聪明,所以我适应他的代码,以便它可以处理整个阵列,并使其更便于携带(没有硬编码的属性名称)。
- (NSArray *)arrayOfThumbnailsOfSize:(CGSize)size fromArray:(NSArray*)original {
NSMutableArray *temp = [NSMutableArray arrayWithCapacity:[original count]];
for(UIImage *image in original){
UIGraphicsBeginImageContext(size);
[image drawInRect:CGRectMake(0,0,size.width,size.height)];
UIImage *thumb = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
[temp addObject:thumb];
}
return [NSArray arrayWithArray:temp];
}
你也许能够使用它?
yourTableViewController.rowImage = [UIImage imageNamed:@"yourImage.png"];
和/或
cell.image = yourTableViewController.rowImage;
如果您的图片已经40×40,那么你应该不必担心设置界限之类的东西......但是,我也是新来这个,所以,我不知道,也没有与表视图行发挥各地/细胞图像多
希望这可以帮助。
我是能够使使用Interface Builder和tableviewcell这项工作。 您可以为图像视图“看点适合”设置“模式”属性。 我不知道如何以编程方式做到这一点。
尝试设置UIImageView.autoresizesSubviews
和/或UIImageView.contentStretch
。