2013-08-07 2 views
6

Я пробовал использовать следующий код, но не повезло. Кто-нибудь знает, как это сделать в iOS 6? I do хотите создать пользовательскую ячейку.изменение углового радиуса uitableview сгруппировано по iOS6

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

Edit:

Похоже, что на самом деле происходит то, что этот код создает радиус угла для всего представления, а не каждого отдельного UITableViewSection. Имеет ли это смысл?

Я также пробовал [cell.layer setCornerRadius:3.0];, но также не повезло. Углы моего UITableView все равно совпадают.

enter image description here

+0

проверить мой обновленный ответ .. – Jitendra

+0

Могу ли я спросить, почему вы не хотите пользовательскую ячейку? Это делает жизнь намного проще –

+0

@RobvanderVeer У меня с трудом использовались пользовательские ячейки в прошлом, но я полагаю, что я был бы открыт для предложений, используя пользовательскую ячейку. Я в первую очередь беспокоюсь о проблемах с производительностью. Люди предложили использовать пользовательские изображения для всей ячейки, и это кажется ленивым и неправильным способом решения этой проблемы. – Apollo

ответ

19

Вы можете изменить де backgroundView в TableViewCell, создать подкласс UIView и изменить класс слоя:

@interface BackgroundView : UIView 
@end 

@implementation BackgroundView 

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

позже в cellForRowAtIndexPath вы делаете что-то вроде этого:

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; 

Результаты этого:

enter image description here

Вы можете изменить углы, которые вы хотите или создать другой путь.

Надеюсь, это поможет.

+0

Я не уверен, почему этот ответ был принят. ОП спросил, можете ли вы применить cornerRadius для группировки ячеек, исправьте меня, если я ошибаюсь. –

2

добавить QuartzCore рамки для вашего проекта

import QuartzCore/QuartzCore.h to your .h file 

self.tableView.layer.cornerRadius = 5.0f;

2

Я думаю, что вам не хватает эту строку кода:

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

Сначала вам нужно использовать QuartzCode Framework Import Framework, что и объявить .h файл Какой класс вы хотели установить Layer Effect.

И добавить, что метод

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

и если вы хотите, чтобы установить угол radious в ячейке также попробовал этот код

UITableViewCell.layer является своего рода класса CALayer и класса CALayer имеют свойство cornerRadius. поэтому вы устанавливаете угловой радиус ячейки как паров:

[cell.layer setCornerRadius:3.0]; 

Пробуйте этот код.

2

Вы можете сделать это. Его рабочий для меня

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

Попробуйте это: -

tableView.layer.cornerRadius=5.0f; 
2

Я думаю, что PrettyKit - это то, что вы ищете. Полностью настраиваемый и быстрый. https://github.com/vicpenap/PrettyKit дать ему идти. Должен делать работу должным образом.

3

Добавьте это в файл .h

#import <QuartzCore/QuartzCore.h> 

И используйте ниже в коде,

tblView.layer.cornerRadius=5.0f; 
4

, который сказал [_tblView.layer setCornerRadius:10.0]; не работает в сгруппированных стиле Tableview.

Напишите этот код, и вы установите setCornerRadius также работает в сгруппированном столеView.

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

enter image description here

[_tblView.layer setCornerRadius:10.0]; не создаст радиус угла для конкретного участка Tableview это для установки углового радиуса всей Tableview.

+1

Как установить угол радиуса для раздела таблицы? – Maddy

3

вместо установки углового радиуса ячейки, установите радиус для cell.contentview следующим образом:

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

поставил выше код при инициализации ячейки.

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