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

我是使用UIBezierPaths绘制形状的新手.到目前为止我发现的所有示例都涉及首先对视图进行子类化,然后重写drawRect:方法并在其中进行绘制,但我无法找到任何绝对确定的说明是否这是唯一的方法在UIView中绘制UIBezierPaths,或者这只是最务实的方式.

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

解决方法

在不使用drawRect的情况下绘制贝塞尔路径的另一种方法是使用CAShapeLayers.将形状图层的path属性设置为从bezier路径创建的CGPath.将形状图层添加为视图图层的子图层.
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];

相关文章

UITabBarController 是 iOS 中用于管理和显示选项卡界面的一...
UITableView的重用机制避免了频繁创建和销毁单元格的开销,使...
Objective-C中,类的实例变量(instance variables)和属性(...
从内存管理的角度来看,block可以作为方法的传入参数是因为b...
WKWebView 是 iOS 开发中用于显示网页内容的组件,它是在 iO...
OC中常用的多线程编程技术: 1. NSThread NSThread是Objecti...