ios - 使用 CGMutablePathRef 的缺点?

标签 ios uikit

我有这个代码来绘制圆角矩形:

void ContextAddRoundedRect(CGContextRef ctx, CGRect rect, CGFloat radius) {
    CGFloat minX = CGRectGetMinX(rect);
    CGFloat maxX = CGRectGetMaxX(rect);
    CGFloat minY = CGRectGetMinY(rect);
    CGFloat maxY = CGRectGetMaxY(rect);

    CGContextMoveToPoint(ctx, minX + radius, minY);
    CGContextAddArcToPoint(ctx, maxX, minY, maxX, minY + radius, radius);
    CGContextAddArcToPoint(ctx, maxX, maxY, maxX - radius, maxY, radius);
    CGContextAddArcToPoint(ctx, minX, maxY, minX, maxY - radius, radius);
    CGContextAddArcToPoint(ctx, minX, minY, minX + radius, minY, radius);
}

我要将其转换为使用 CGMutablePathRef对于绘图,因为那样我可以使用 -[UIBezierPath containsPoint:] (首先使用 +bezierPathWithCGPath:,如 the comments and answer here 中所述。)

使用 CGMutablePathRef 是否有任何严重/已知的缺点?而不是直接在 CGContext 上绘制? 我的猜测是它不是首发,但也许我错过了一些东西。

(我知道我必须释放它)

最佳答案

只需使用 +[UIBezierPath bezierPathWithRoundedRect:cornerRadius:] 省去所有的麻烦。如果您真的需要CGPathRef从它,然后得到 CGPath 属性(property)。

除非您每秒执行此操作数千次,否则它不太可能明显变慢或占用大量内存。

关于ios - 使用 CGMutablePathRef 的缺点?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14299140/

相关文章:

iOS 位置推送服务扩展。 CLLocationPushServiceErrorDomain代码: 1

objective-c - 综合中的奇怪分配

ios - 如何禁用特定 UITableViewCell 的图像?

ios - 将触摸事件(移动/滑动)传递给父级(UITableViewCell),但在当前 View (UITextField)上保留点击事件

ios - 内存问题 - 生存与整体 -> 应用程序被杀死

ios - 当我返回时自定义 tableview 单元格没有取消选择?

swift - 在 SwiftUI 中向 NavigationView 添加搜索栏

iphone - UISplitViewController 和复杂的 View 层次结构

ios - collectionView.collectionViewLayout.invalidateLayout()

iphone - 动态调整 UITextView 大小的错误边距行为