2016-04-01 6 views
1

Meine Anforderung besteht darin, kreisförmige Bilder in Tabellenansichtszellen anzuzeigen. Zu diesem Zweck in Zelle für Zeile gab ich Eckenradius für den Ausgang meiner Bildansicht jetzt Bild wird im kreisförmigen Format angezeigt, aber wenn Scroll-Zellen zittern, wenn ich den Eckenradius-Code zu stoppen funktioniert gut kann jemand sagen mir das Problem?TabelView Zellen zittern beim Eckenradius?

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{ 

    NSString *cellIdentifier [email protected]"notification"; 

    NotifiucationTableViewCell *cell =[tableView dequeueReusableCellWithIdentifier:cellIdentifier]; 
    if (cell == nil) { 
     cell = [[NotifiucationTableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:cellIdentifier]; 
    } 

    ZSAnnotation *objArray = [personDetails objectAtIndex:indexPath.row]; 
    [cell.profilePic sd_setImageWithURL:[NSURL URLWithString:objArray.personImage] 
         placeholderImage:[UIImage imageNamed:@"profile-pic-big.png"]]; 

    cell.personDescription.text = objArray.personDescription; 
    cell.personTitle.text = objArray.personTitle; 
    myString = [[NSNumber numberWithFloat:objArray.rating] stringValue]; 
    km = [NSString stringWithFormat:@"%@%@", myString, @" KM"]; 

    cell.personNearbyDistance.text = km; 
    [cell.callButton addTarget:self action:@selector(callButtonAction:) forControlEvents:UIControlEventTouchUpInside]; 
    cell.accessoryType = UITableViewCellAccessoryDisclosureIndicator; 
    cell.selectionStyle = UITableViewCellSelectionStyleNone; 
    cell.backgroundColor = [UIColor whiteColor]; 
    cell.profilePic.layer.cornerRadius = 30; 

    return cell; 
} 
+0

Haben Sie das Gerät eingecheckt? Hast du ein Problem? –

+0

Ja, ich habe in iPad eingecheckt ich habe ein Problem –

+0

Können Sie Screenshot hochladen? –

Antwort

0

versuchen, die Zelle UI-Einstellungen in der Zelle Klasse „awakeFromNib“ Methode zu setzen, wie:

- (void)awakeFromNib{ 
    self.imageView.layer.cornerRadius = 30; 
} 

weil UITableViewCell immer wieder verwendet wird, wenn Sie versuchen, Zelle UI in „cellForRowAtIndexPath“ Methode zu aktualisieren Der Code wird jedes Mal ausgeführt, bevor eine Zelle angezeigt wird. Wenn Sie jedoch den Code in "watchFromNib" setzen, wird der Code möglicherweise nur einige Male ausgeführt, wenn das TableView geladen wird, und wird nicht erneut ausgeführt, wenn Sie nach oben oder unten scrollen. und Zellen erscheinen glatt.

0

Ich denke, Sie können den Eckenradius in der Zelle selbst geben. Der Grund, warum die Zellen flackern, liegt daran, dass die TableView versucht, die Zelle zu entschlüsseln, wenn die Tabellenansicht innerhalb der cellForItemAtIndexPath-Methode gescrollt wird, wodurch die Zelle flackert.

Sie können von in wach wie dies tun nib

-(void) awakwFromNib 
{ 
    self.yourImageView.cornerRadius = 30; 
    self.yourImageView.layer.maskToBounds = YES; 
} 
0

Versuchen

cell.profilePic.layer.cornerRadius = 30; 

mit

if (cell.profilePic.layer.cornerRadius != 30){ 
    cell.profilePic.layer.cornerRadius = 30; 
    cell.profilePic.clipsToBounds = YES; 
} 

auf diese Weise zu ersetzen, wird der Radius nur einmal angewendet werden, wenn die Schaffung Zelle.

Verwandte Themen