ios - 在没有子类化的情况下在 UIView 中绘制 UIBezierPaths?

标签 ios objective-c uiview uikit uibezierpath

我是使用 UIBezierPaths 绘制形状的新手。到目前为止,我发现的所有示例都涉及首先对 View 进行子类化,然后覆盖 drawRect: 方法并在其中进行绘图,但我还没有找到任何可以绝对确定的内容这是在 UIView 中绘制 UIBezierPaths 的唯一方法,还是这只是最实用的方法。

有没有其他方法(除了 swizzling)在 UIView 中绘制 UIBezierPath 而不对其进行子类化?

最佳答案

另一种不使用 drawRect 绘制贝塞尔曲线路径的方法是使用 CAShapeLayers。将形状层的路径属性设置为从贝塞尔路径创建的 CGPath。将形状图层作为子图层添加到您的 View 图层。

    UIBezierPath *shape = [UIBezierPath bezierPathWithOvalInRect:self.view.bounds];
    CAShapeLayer *shapeLayer = [CAShapeLayer layer];
    shapeLayer.path = shape.CGPath;
    shapeLayer.fillColor = [UIColor colorWithRed:.5 green:1 blue:.5 alpha:1].CGColor;
    shapeLayer.strokeColor = [UIColor blackColor].CGColor;
    shapeLayer.lineWidth = 2;

    [self.view.layer addSublayer:shapeLayer];

关于ios - 在没有子类化的情况下在 UIView 中绘制 UIBezierPaths?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29634852/

相关文章:

ios - Storyboard虚拟值

ios - 在 Swift 中编写自定义 UITableViewCell 时强制向下转换

ios - 使用 Coredata 和 NSFetchRequest 进行 "IN"搜索时如何格式化 NSPredicate

ios - 仅使用约束初始化自定义 UIView (IOS)

ios - 如何在 UIView 上制作斜角?

ios - Obj-c - 从 NSDictionary 获取值时应用程序崩溃?

ios - 如何在 stringWithContentsOfURL :encoding:error:? 中限制字符串的大小

ios - 如何在 iOS 9 中使用 Apple maps on objective-c?

objective-c - Cocoa - 防止系统关闭

iphone - 添加到 UIWindow 的 UIView 中的方向