【发布时间】:2016-04-05 08:24:15
【问题描述】:
我是 iOS 新手。我正在制作一个聊天应用程序。我正在使用UITableView 显示消息聊天(一个单元格 - 一个消息)。
在每个单元格中,我会在 2,3 或 4 角处将消息四舍五入(如 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;
问题是,当布局第一次初始化时,一切正常,但是当我滚动某些单元格时出现错误的舍入器(我发现问题是有时滚动 self.messageView.bounds 返回错误的值所以@ 987654330@画错角)但我不知道为什么
我怎样才能防止它发生?
或者我是否可以在没有UIBezierPath 的情况下使用另一种方法来舍入视图(我谷歌但我只找到一种舍入 UIView 的方法是使用 UIBezierPath :()?
任何帮助将不胜感激
【问题讨论】:
-
试试这个代码 [v.layer setCornerRadius:30.0f]; // 边框 [v.layer setBorderColor:[UIColor lightGrayColor].CGColor]; [v.layer setBorderWidth:1.5f]; // 投影 [v.layer setShadowColor:[UIColor blackColor].CGColor]; [v.layer setShadowOpacity:0.8]; [v.layer setShadowRadius:3.0]; [v.layer setShadowOffset:CGSizeMake(2.0, 2.0)];
-
@DarjiJigar 我的要求是
rounder the message in 2,3 or 4 corner,你的代码只在4个角落变圆 -
检查一下stackoverflow.com/questions/4847163/round-two-corners-in-uiview,但我猜(你也是这么说的)这个问题不是在绘图上而是在获得正确的边界上,所以我会专注于修复它而不是避免使用贝塞尔路径
-
@Injectios 谢谢。但在您给定的链接中,接受答案是 5 年前,另一个新答案是使用
UIBezierPath就像我的代码一样
标签: ios objective-c uitableview uibezierpath