1

我有一个由 nib 文件制成的自定义 UITableViewCell 并包含大 imageView (使用 SDWebImage)、 OHAttributedLabel 和 5-6 UILabel

滚动在 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 回答
0

您可以尝试使用常规的UILabel. NSAttributedString开箱即用的iOS 6 和 7 支持。在 iOS 6 中它使用 WebKit,但在 iOS 7 中它使用 Text Kit。iOS 7 版本UILabel应该会进行显着优化。

于 2013-09-24T16:26:43.577 回答