gpt4 book ai didi

objective-c - 目录加载时间

转载 作者:行者123 更新时间:2023-11-28 17:32:59 26 4
gpt4 key购买 nike

我的应用程序的功能之一是允许用户保存图像。这些图像稍后会在 UITableView 的详细 View 和 UITableView 的单元格中呈现。但是,当返回到显示单元格的页面时,它需要很长时间才能加载。我相信这是因为图像被保存到文档目录中,并且每次加载页面时它们都会从目录中重新加载。我应该在每次应用程序启动时将图像加载到内存中,还是我的理论偏离了。我还尝试使用以下代码压缩图像,但并没有提高性能。

       [[GTImageStore sharedStore] setImage:currentImage forKey:currentImageKey];

NSString *jpgName = [[NSString alloc] initWithFormat:@"Documents/%@.jpg", currentImageKey];
NSString *jpgPath = [NSHomeDirectory() stringByAppendingPathComponent:jpgName];

float scale;
if (currentImage.size.width < currentImage.size.height)
{
scale = 100/currentImage.size.width;
}
else if (currentImage.size.width > currentImage.size.height)
{
scale = 100/currentImage.size.height;
}
else
{
scale = 100/currentImage.size.width;
}

UIImage *image = [[UIImage alloc] initWithCGImage:currentImage.CGImage scale:scale orientation:[currentImage imageOrientation]];

[UIImageJPEGRepresentation(image, 0.5) writeToFile:jpgPath atomically:YES];

非常感谢任何帮助!谢谢!

添加单元格的代码:- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { UINib *giftCell = [UINib nibWithNibName:@"GiftCell"bundle:nil]; [tableView registerNib:giftCell forCellReuseIdentifier:@"UIGiftsTableCell"];

cell = [tableView dequeueReusableCellWithIdentifier:@"UIGiftsTableCell"];
if (!cell) {
cell = [[GTGiftCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:@"UIGiftsTableCell"];
}

// Determine gift at index path
GTGift *gift = (GTGift *)[[[GTGiftStore sharedStore] allGifts] objectAtIndex:[indexPath row]];

[[cell textLabel] setText:[gift name]];
NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
[formatter setDateStyle:NSDateFormatterLongStyle];
NSString *subText = [[NSString alloc] initWithFormat:@"Purchased on %@", [formatter stringFromDate:[gift datePurchased]]];
[[cell subTextLabel] setText:subText];

[[cell detailTopTextLabel] setText:[[gift givingTo] name]];
[[cell detailMiddleTextLabel] setText:[[gift reasonFor] name]];
[[cell detailBottomTextLabel] setText:[[gift boughtFrom] name]];

NSString *jpgName = [[NSString alloc] initWithFormat:@"Documents/%@.jpg", [gift imageKey]];
NSString *jpgPath = [NSHomeDirectory() stringByAppendingPathComponent:jpgName];
UIImage *imageToLoad = [[UIImage alloc] initWithContentsOfFile:jpgPath];
[[[cell image] layer] setBorderColor:[[UIColor lightGrayColor] CGColor]];
[[[cell image] layer] setBorderWidth:1];
[[cell image] setClipsToBounds:YES];
[[cell image] setContentMode:UIViewContentModeScaleAspectFill];
[[cell image] setImage:imageToLoad];

return cell;

我使用带有名为 GTGiftCell 的 viewController 的 xib 文件创建了一个自定义单元格。

最佳答案

你可以采取两种方法

  1. 如果您的应用程序需要在图像发生变化时加载它们,那么您可以继续按原样加载图像,但您应该阅读苹果Concurrency Programming Guide如果图像需要在没有用户刷新 View 的情况下更新和更改,则可以提高性能
  2. 在应用程序加载时加载图像,但再次提高性能请阅读 Concurrency Programming Guide

关于objective-c - 目录加载时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10712157/

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