2013-08-07 13 views
6

Próbowałem użyć następującego kodu, ale bez powodzenia. Czy ktoś wie, jak to zrobić w iOS 6? I Nie chcę, aby utworzyć niestandardową komórkę.zmiana promienia narożnika uitableview zgrupowanego w iOS6

self.tableView.layer.cornerRadius = 5.0f; 
    [self.tableView setClipsToBounds:YES]; 

Edit:

Wydaje się, że to, co się rzeczywiście dzieje, że ten kod jest stworzenie promień narożny dla całego widzenia, a nie poszczególnych UITableViewSection. Czy to ma sens?

Próbowałem również [cell.layer setCornerRadius:3.0];, ale także bez powodzenia. Rogi mojego UITableView są wciąż dokładnie takie same.

enter image description here

+0

Sprawdź moją zaktualizowaną odpowiedź. – Jitendra

+0

Czy mogę zapytać, dlaczego nie chcesz niestandardowej komórki? To znacznie ułatwia życie. –

+0

@RobvanderVeer Miałem trudności z używaniem niestandardowych komórek w przeszłości, ale przypuszczam, że byłbym otwarty na sugestie przy użyciu niestandardowej komórki. Martwię się przede wszystkim o problemy z wydajnością. Ludzie sugerowali używanie niestandardowych obrazów dla całej komórki i wydaje się, że to leniwy i niepoprawny sposób rozwiązania problemu. – Apollo

Odpowiedz

19

można zmienić de backgroundView z TableViewCell utworzyć podklasę UIView i zmienić klasę warstwy:

@interface BackgroundView : UIView 
@end 

@implementation BackgroundView 

+ (Class)layerClass 
{ 
    return [CAShapeLayer class]; 
} 
@end 

później w komórceForRowAtIndexPath robisz coś takiego:

static NSString *CellIdentifier = @"CustomCell"; 
CustomCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier forIndexPath:indexPath]; 

CGRect frame = cell.backgroundView.frame; 
cell.backgroundView = [[BackgroundView alloc] initWithFrame:frame]; 

CGFloat corner = 20.0f; 
UIBezierPath *path = [UIBezierPath bezierPathWithRoundedRect:cell.backgroundView.bounds byRoundingCorners:UIRectCornerAllCorners cornerRadii:CGSizeMake(corner, corner)]; 
CAShapeLayer *shapeLayer = (CAShapeLayer *)cell.backgroundView.layer; 
shapeLayer.path = path.CGPath; 
shapeLayer.fillColor = cell.textLabel.backgroundColor.CGColor; 
shapeLayer.strokeColor = [UIColor lightGrayColor].CGColor; 
shapeLayer.lineWidth = 1.0f; 

return cell; 

Wynika to:

enter image description here

można zmodyfikować narożniki chcesz lub tworzyć inną ścieżkę.

Mam nadzieję, że to pomaga.

+0

Nie jestem pewien, dlaczego ta odpowiedź została przyjęta. OP zapytał, czy możesz zastosować cornerRadius do zgrupowanych komórek, popraw mnie, jeśli się mylę. –

2

add QuartzCore ramy do projektu

import QuartzCore/QuartzCore.h to your .h file 

self.tableView.layer.cornerRadius = 5.0f;

2

myślę, że brakuje tej linii kodu:

[self.tableView.layer setMasksToBounds:YES]; 
2

najpierw trzeba użyć QuartzCode ramową Importuj że ramowy i deklarują .h plik, który klasa chciałeś ustawić warstwy Effect.

i dodać, że metoda

myTableView.layer.cornerRadius=5; 
[myTableView setClipsToBounds:YES]; 

i jeśli chcesz ustawić róg Promień do komórki również próbował ten kod

UITableViewCell.layer niby klasy CALayer i klasy CALayer mają właściwość o nazwie cornerRadius. więc ustawiamy promień naroża komórki jako spadek:

[cell.layer setCornerRadius:3.0]; 

Spróbuj tego kodu.

2

Możesz to zrobić. Jego pracy dla mnie

UILabel *delLbl = [[UILabel alloc]initWithFrame:CGRectMake(0, 0, 300, 44)]; 
    delLbl.font = [UIFont fontWithName:@"Arial-BoldMT" size:18]; 
    delLbl.layer.cornerRadius = 10.0f; 
    delLbl.layer.borderWidth = 1.0f; 
    delLbl.layer.borderColor = [UIColor grayColor].CGColor; 
    delLbl.text = @"Cell Text"; 
    delLbl.textAlignment = NSTextAlignmentCenter; 
    [cell.contentView addSubview:delLbl]; 
    cell.backgroundView = [[UIView alloc] initWithFrame:CGRectZero]; 
    Return Cell; 
1

Spróbuj tego: -

tableView.layer.cornerRadius=5.0f; 
3

Dodaj to do pliku .h

#import <QuartzCore/QuartzCore.h> 

I używać w kodzie poniżej,

tblView.layer.cornerRadius=5.0f; 
4

który powiedział [_tblView.layer setCornerRadius:10.0]; nie pracuje w zgrupowane stylu Tableview.

Napisz ten kod, a ustawisz setCornerRadius działa również w zgrupowanym tableView.

[_tblView setBackgroundView:nil]; 
[_tblView setBackgroundColor:[UIColor greenColor]]; 
[_tblView.layer setCornerRadius:10.0]; 

enter image description here

[_tblView.layer setCornerRadius:10.0]; nie stworzy promień rożny dla poszczególnych sekcji Tableview ten służy do ustawiania promienia narożnika całego Tableview.

+1

Jak ustawić promień narożnika dla przekroju stołu? – Maddy

3

zamiast ustawiać promień rogu komórki, ustawić promień dla cell.contentview następująco:

cell.contentView.layer.cornerRadius = 10.0f; 
cell.contentView.layer.borderColor = [UIColor blackColor].CGColor; 
cell.contentView.layer.borderWidth = 3.0f; 

umieścić powyższy kod podczas inicjalizacji komórkę.

Powiązane problemy