UIBezierPath在滚动时出现问题

我是iOS新手。 我正在做一个聊天应用程序。 我正在使用UITableView来显示消息聊天(一个单元格 – 一个消息)。
在每个单元格中,我将在2,3或4个angular落(比如Facebook聊天)

为了更圆润,我使用每个Tableview Cell layoutSubView中的UIBezierPath

 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; 

在这里输入图像说明

问题是 ,当布局第一次初始,一切工作正常,但是当我滚动一些单元格有错误的rounder(我找出问题是有时滚动self.messageView.bounds返回错误的值,所以UIBezierPath绘制错误的angular落),但我不'不知道为什么

我怎样才能防止它发生? 或者我可以有另一种方式来rounder视图没有UIBezierPath (谷歌,但我只能find一种方法来圆的UIView是使用UIBezierPath :()?
任何帮助,将不胜感激

我有一个类似的问题,并通过在tableView:willDisplayCell:forRowAtIndexPath移动angular四舍五入的代码来解决它tableView:willDisplayCell:forRowAtIndexPath这将允许Cocoa正确地设置大小。