2016-01-26 2 views
4

У меня есть таблица, есть ячейка, которая содержит contentView, на которой UIView, а в нем уже UITextView мне необходимо cornerRadius сверху слева, сверху справа, слева снизу (как на картинке)UITextView CornerRadius в клетке

As shall be

Но в случае запуска приложения у меня показывает, вот так:

as is

Если сделать прокрутку таблицы (прокрутить эту ячейку) и обратно, то она отображается, как это необходимо. Помогите сделать, что в случае запуска непосредственно он отображается как надо, вот код, который отвечает за это cellForRowAtIndexPath:

UIRectCorner rectCorner = UIRectCornerTopLeft | UIRectCornerBottomLeft | UIRectCornerTopRight; 

    UIBezierPath *maskPath; 
    maskPath = [UIBezierPath bezierPathWithRoundedRect:cell.viewMessage.bounds//cell.viewMessage.bounds 
            byRoundingCorners:rectCorner 
              cornerRadii:CGSizeMake(20.0, 20.0)]; 

    CAShapeLayer *maskLayer = [[CAShapeLayer alloc] init]; 

    maskLayer.path = maskPath.CGPath; 

    cell.viewMessage.layer.masksToBounds = YES; 

    cell.viewMessage.layer.mask = maskLayer; 
+0

, если вы хотите в каждой клетке затем поместить этот код в пользовательский метод класса клеток -awakeFromNib –

+0

@bhargavbajani я сделал, не помогло – Northex

+0

пожалуйста дать всем cellForRowAtIndexPath код –

ответ

1

Ваш код выглядит хорошо, за исключением не использовать вид контента и добавить отдельный TextView вместо. Вот мое решение для этого.

  • Создайте новый класс UITableViewCell и создать вместе с .xib файлом (для вашего удобства. Вы можете создать его отдельно).
  • Добавить textView в файл xib и создать IBOutlet. (например) viewMessage.
  • Добавить thebelow код в классе, где вы используете UITableView,

    - (void)viewDidLoad { 
        [self.tableview registerNib:[UINib nibWithNibName:@"UITableviewCellclassname" bundle:nil] forCellReuseIdentifier:@"cell"]; 
    } 
    

В Вдобавок к вышесказанному, я попробовал ваш код и он работает идеально ... Отрегулируйте радиус угла, исходя из ваших потребностей. Надеюсь, что это поможет и сообщит мне, если у вас есть какие-либо вопросы :) enter image description here

1

Я думаю, ваш класс viewMessage - это нестандартный класс.

Добавить создание maskLayer этого класса в initWithCoder и/или initWithFrame забудьте обновить maskLayer путь в layoutSubviews методе viewMessage класса.

Проверьте это: Corner Radius Using UIBezierPath