nibファイルから作成され、大きなimageView(SDWebImageを使用)、OHAttributedLabel、および5-6 UILabelを含むカスタムUITableViewCellがあります
スクロールは通常、iOS6 ではかなり高速ですが、iOS7 では非常に遅く、遅れることが判明しました。
nib ファイルのいくつかの要素を削除しようとしましたが、大きな imageView (SDWebImage) または OHAttributedLabel があるとスクロールが非常に遅いことに気付きました
スクロールのパフォーマンスを向上させる方法はありますか? iOS6で良かったので、以前はこの問題が発生するとは思っていませんでした(テストにはiphone5を使用しています)
-(void)viewDidLoad
{
[super viewDidLoad];
//register the nib here for customItemCEll
[self.tableView registerNib:[UINib nibWithNibName:@"customItemCell" bundle:nil] forCellReuseIdentifier:@"customItemCell"];
}
-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *cellIdentifier = @"customItemCell";
CustomItemCell *cell = (CustomItemCell *)[tableView dequeueReusableCellWithIdentifier:SquakCellIdentifier forIndexPath:indexPath];
customItem *item = [itemsArray objectAtIndex:[indexPath row]];
NSMutableAttributedString *attrStr = [[NSMutableAttributedString alloc] initWithString:[NSString stringWithFormat:@"%@",[item post] ]];
[attrStr setFontName:@"Helvetica" size:14];
// cell.postLabel is OHAtrributedLabel
cell.postLabel.delegate = self;
cell.postLabel.attributedText = attrStr;
cell.postLabel.text = [item post] ;
//configureHashtage is too ask OHAttributedLabel to make a hashtag link
[cell configureHashtagLabel];
if([item hasImageURLString]){
[cell.postImageView setHidden:NO];
CGFloat yPosition = cell.thumbnailView.frame.origin.y + cell.thumbnailView.frame.size.height+15;
NSDictionary *attributes = @{NSFontAttributeName: [UIFont fontWithName:@"Helvetica" size:14]};
CGRect frameSize = [item.post boundingRectWithSize:CGSizeMake(220, 2000) options:NSStringDrawingUsesLineFragmentOrigin attributes:attributes context:nil];
yPosition = MAX(yPosition,cell.postLabel.frame.origin.y+frameSize.size.height+20);
[cell.postImageView setImageWithURL:[NSURL URLWithString:[item postImageURLString]] placeholderImage:[UIImage imageNamed:@"image_placeholder.png"] ];
CGRect imageFrame = CGRectMake(10 ,yPosition, 300, 200);
[cell.postImageView setFrame:imageFrame];
[cell.postImageView setClipsToBounds:YES];
cell.postImageView.userInteractionEnabled = YES;
[cell.postImageView setupImageViewerWithImageURL:[NSURL URLWithString:[item postImageURLString]]];
}
else {
[cell.postImageView setHidden:YES];
}
return cell;
}