sla*_*ick 25 iphone objective-c uitableview uiimageview
我在tableView和detailView中使用相同的大图像.当tableView中显示imags时,需要使imageView填充40x40,但是在半个屏幕上拉伸.我玩了几个属性,但没有积极的结果:
[cell.imageView setBounds:CGRectMake(0, 0, 50, 50)];
[cell.imageView setClipsToBounds:NO];
[cell.imageView setFrame:CGRectMake(0, 0, 50, 50)];
[cell.imageView setContentMode:UIViewContentModeScaleAspectFill];
Run Code Online (Sandbox Code Playgroud)
我正在使用SDK 3.0,内置"预定义样式中的单元对象".
小智 32
我将Ben的代码作为我的NS-Extensions文件中的扩展,以便我可以告诉任何图像制作自己的缩略图,如:
UIImage *bigImage = [UIImage imageNamed:@"yourImage.png"];
UIImage *thumb = [bigImage makeThumbnailOfSize:CGSizeMake(50,50)];
Run Code Online (Sandbox Code Playgroud)
这是.h文件:
@interface UIImage (PhoenixMaster)
- (UIImage *) makeThumbnailOfSize:(CGSize)size;
@end
Run Code Online (Sandbox Code Playgroud)
然后在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
Run Code Online (Sandbox Code Playgroud)
Ben*_*man 12
我缓存了一个缩略图版本,因为使用在运行中按比例缩小的大图像会占用太多内存.
这是我的缩略图代码:
- (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;
}
Run Code Online (Sandbox Code Playgroud)
如果您更改原始图像,请确保正确清除缓存的缩略图(在我的情况下为self.preview).
Wol*_*cow -1
你也许可以用这个?
yourTableViewController.rowImage = [UIImage imageNamed:@"yourImage.png"];
Run Code Online (Sandbox Code Playgroud)
和/或
cell.image = yourTableViewController.rowImage;
Run Code Online (Sandbox Code Playgroud)
如果你的图像已经是 40x40 那么你不必担心设置边界和其他东西...但是,我对此也很陌生,所以,我不知道,还没有玩过表视图行/细胞图像很多
希望这可以帮助。
| 归档时间: |
|
| 查看次数: |
66465 次 |
| 最近记录: |