2014-07-17 3 views
0

Привет, ребята, так как у меня есть UITableView с пользовательской ячейкой, где я разбираю некоторые данные XML, чтобы сделать ячейку стильной, я использовал этот код для градиентного фона, теперь проблема в том, что мое приложение отстает от меня прокрутите вниз или вверх в таблице. Это мой код:uiscrollview отставание от фона ячейки градиента

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath: 
(NSIndexPath *)indexPath{  
static NSString *CellIdentifier [email protected]"ProvidersCell"; 
ProvidersViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier]; 
if (cell == nil) { 
    cell = [[ProvidersViewCell alloc]initWithStyle:UITableViewCellStyleDefault 
reuseIdentifier:CellIdentifier];  
} 
NSString*imageurl = [XMLReader getValue:[[providers objectAtIndex:indexPath.row] objectForKey: @"Image"]]; 
if ([imageurl isEqual: @""]) { 
    UIImage* myImage = [UIImage imageWithData: 
         [NSData dataWithContentsOfURL: 
         [NSURL URLWithString:@"http://www./nopic.jpg"]]]; 

    cell.provider_img.image=myImage; 
}else{ 
    UIImage* myImage = [UIImage imageWithData: 
         [NSData dataWithContentsOfURL: 
         [NSURL URLWithString:imageurl]]]; 

    cell.provider_img.image=myImage; 
} 
    [cell setBackgroundColor:[UIColor clearColor]]; 

    CAGradientLayer *grad = [CAGradientLayer layer]; 
    grad.frame = cell.bounds; 
    grad.colors = [NSArray arrayWithObjects:(id)[[UIColor colorWithRed:241/255.0 green:241/255.0 blue:242/255.0 alpha:1.0] CGColor],(id)[[UIColor colorWithRed:231/255.0 green:231/255.0 blue:232/255.0 alpha:1.0] CGColor], (id)[[UIColor colorWithRed:207/255.0 green:207/255.0 blue:207/255.0 alpha:1.0] CGColor], nil]; 

    [cell setBackgroundView:[[UIView alloc] init]]; 
    [cell.backgroundView.layer insertSublayer:grad atIndex:0]; 

    CAGradientLayer *selectedGrad = [CAGradientLayer layer]; 
    selectedGrad.frame = cell.bounds; 
    selectedGrad.colors = [NSArray arrayWithObjects:(id)[[UIColor colorWithRed:24/255.0 green:215/255.0 blue:229/255.0 alpha:1.0] CGColor],(id)[[UIColor colorWithRed:22/255.0 green:206/255.0 blue:219/255.0 alpha:1.0] CGColor], (id)[[UIColor colorWithRed:9/255.0 green:173/255.0 blue:185/255.0 alpha:1.0] CGColor], nil]; 

    [cell setSelectedBackgroundView:[[UIView alloc] init]]; 
    [cell.selectedBackgroundView.layer insertSublayer:selectedGrad atIndex:0]; 


cell.provider_name.text =[XMLReader getValue:[[providers objectAtIndex:indexPath.row] objectForKey: @"Name"]]; 
cell.provider_condition.text = [XMLReader getValue:[[providers objectAtIndex:indexPath.row] objectForKey: @"Condition"]]; 
cell.provider_payout.text = [XMLReader getValue:[[providers objectAtIndex:indexPath.row] objectForKey: @"Payout"]]; 
NSString*rating = [XMLReader getValue:[[providers objectAtIndex:indexPath.row]objectForKey:@"Rating"]]; 
NSInteger rate = [rating integerValue]; 

return cell;} 

ответ

1

Я вижу 2 проблемы на вашем коде:

1) Вы загружаете изображение на главном потоке, вы должны сделать это на другом потоке. Попробуйте использовать SDWebImage (https://github.com/rs/SDWebImage);

2) Вы можете создать свою собственную ячейку, вы много работаете над cellForRowAtIndexPath. Попробуйте создать свою тень с помощью UIBezierPath и установите yourCell.layer.shouldRasterize = YES

+0

О, я вижу, я попробую это благодаря. – Musashi

+0

может ли это 2 проблемы сильно повлиять на аккумулятор iphone? – Musashi

+0

Я так не думаю – Claudio

Смежные вопросы