1

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;



}
4

2 に答える 2

0

iOS 7 でのテーブル スクロールのパフォーマンスに大きな影響があり、次のコード行まで追跡しました。

[UISearchBar appearance].backgroundColor = [UIColor whiteColor];

結局、このコード行はとにかく何もしないことがわかりました - そして、iOS 7 アプリの外観をカスタマイズしていたときに誤って挿入されました.

これは SDK のバグに違いありませんが、この行を削除してアプリを再実行することで、スクロール パフォーマンスは自然に解決されました。これはアプリ内のすべてのスクロール ビューでした。CPUサイクルを盗んでいたメインの実行ループで何かをしていたに違いありません...それが理にかなっているのかどうかはわかりません。

とにかく...外観コードがあるかどうかをいつでも確認して確認し、一時的にコメントアウトして、パフォーマンスを低下させているものを見つけることができます.

于 2013-09-24T16:25:30.957 に答える