Устранение ошибки UIBezierPath при прокрутке

Я новичок в iOS. Я делаю чат-приложение. Я использую UITableView для отображения чата сообщений (одна ячейка - одно сообщение).
В каждой ячейке я буду объединять сообщение в 2,3 или 4-х углах (например, в чате Facebook)

Для круглого я использую UIBezierPath внутри layoutSubView для каждого Tableview Cell

UIBezierPath *maskPath = [UIBezierPath bezierPathWithRoundedRect:self.messageView.bounds byRoundingCorners:(UIRectCornerTopLeft | UIRectCornerBottomLeft) cornerRadii:CGSizeMake(3.0, 3.0)];

CAShapeLayer *maskLayer = [[CAShapeLayer alloc] init];
maskLayer.frame = self.bounds;
maskLayer.path  = maskPath.CGPath;
self.messageView.layer.mask = maskLayer;

введите описание изображения здесь

Проблема заключается в, когда макет сначала начальный, все работает нормально, но когда я прокручиваю некоторую ячейку, у меня неправильный круг (я выясняю, что проблема когда-то, когда прокрутка self.messageView.bounds возвращает неправильное значение, поэтому UIBezierPath нарисуйте неправильный угол), но я не знаю, почему

Как я могу предотвратить это? Или Могу ли я иметь другой способ объединить View без UIBezierPath (я google, но я нашел только один способ объединить UIView с помощью UIBezierPath:()?
Любая помощь будет оценена

Ответ 1

У меня была аналогичная проблема, и я исправил ее, перемещая код округления угла внутри tableView:willDisplayCell:forRowAtIndexPath Это позволит Cocoa правильно определять размер.