滚动时UIBezierPath问题更圆

时间:2016-04-05 08:24:16

标签: ios objective-c uitableview uibezierpath

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

中传达消息

对于更圆的我使用UITableViewUIBezierPath layoutSubView

Tableview Cell

enter image description here

问题是,当布局第一次初始化时,一切正常,但是当我滚动一些单元格时出现错误的圆形(我发现问题是滚动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的情况下观看视图(我谷歌,但我只找到一种方法来使用UIView使用UIBezierPath :()?
任何帮助将不胜感激

2 个答案:

答案 0 :(得分:2)

我遇到了类似的问题并通过在tableView:willDisplayCell:forRowAtIndexPath内移动我的转角代码来修复它。这将允许Cocoa正确调整大小。

答案 1 :(得分:0)

我有一个类似的问题,可以通过在layoutSubviews()中移动代码来解决它

<BarcodeReader
onError={handleError}
onScan={handleScan}
/>