ios - 滚动时 UIBezierPath 问题的舍入

标签 ios objective-c uitableview uibezierpath

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

对于 rounder,我在每个 Tableview CelllayoutSubView 中使用 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;

enter image description here

问题是,当布局第一次初始化时,一切正常,但是当我滚动一些单元格时有错误的舍入(我发现问题是滚动 self.messageView.bounds 返回错误的值所以 UIBezierPath 画错了角)但我不知道为什么

我怎样才能防止它发生? 或者我可以用另一种方法在没有 UIBezierPath 的情况下舍入 View(我用谷歌搜索但我只找到一种舍入 UIView 的方法是使用 UIBezierPath :( )?
任何帮助将不胜感激

最佳答案

我有一个类似的问题,并通过在 tableView:willDisplayCell:forRowAtIndexPath 中移动我的圆角代码来修复它,这将允许 Cocoa 正确调整大小。

关于ios - 滚动时 UIBezierPath 问题的舍入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36420899/

相关文章:

ios - 如何在iOS 10 上播放UIPickerView 的滴答声?

objective-c - 如何查找 UILabel 文本是否缩短/缩小?

ios - 根据选择的行将数据从 UITableView 传递到另一个 ViewController

ios - 如何在 Swift 中本地化 tableView 单元格?

android - 函数 'Stream<User?>' 无法返回类型为 'user' 的值,因为它在 flutter 中的返回类型为 'Stream<User>'

javascript - 当用户从列表中选择时如何显示内容详细信息?

ios - 如何删除viewController中编码的 View 按钮?

ios - UITableView 滚动移除 UIButton 值

objective-c - 与 ValueTransformer 绑定(bind)时 NSColorWell 无法打开

ios - 如何访问自定义 TableViewCell 中按钮的索引路径?