私はテーブルビューを持っています。画像とテキストで古典的なリストを作成したいと思います。大きな画像のUITableViewCellは液体ではありません
これは私のcellForRowAtIndexPathです。画像の精緻化なしではすべて正常に動作しますが、これはビューコントローラを表示するのが非常に遅く、スクロールは流動的ではありません。
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{
static NSString *simpleTableIdentifier = @"SimpleTableItem";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:simpleTableIdentifier];
NSDictionary* element = [dataSource objectAtIndex:indexPath.row];
if (cell == nil) {
cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:simpleTableIdentifier];
}
NSString* imageUri = [element valueForKey:@"uri"];
UIImage* image = [UIImage imageWithContentsOfFile:imageUri];
CGFloat wImg = image.size.width * cell.frame.size.height/image.size.height;
CGSize newSize = CGSizeMake(wImg, cell.frame.size.height);
UIGraphicsBeginImageContextWithOptions(newSize, NO, 0.0);
[image drawInRect:CGRectMake(0, 0, newSize.width, newSize.height)];
UIImage *newImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
cell.textLabel.text = [ element valueForKey:@"text"];
cell.imageView.image = newImage;
return cell;
}
私は大きなイメージ(iphone写真)を持っていますが、これを行うにはどうすればよいですか?
の
contentMode
プロパティを設定しますか? – fabe@Polあなたは 'UIGraphicsEndImageContext'を実行するために 'async dispatch'を使うことができます。そして、それらのコードを' if cell == nil {} ' – aircraft
@aircraftに入れてください。解決されました。あなたは 'async dispatch'でコードを書くことができますか? – Pol