Jas*_*lin 15 core-animation objective-c ios
这是示例代码:
//Called by VC:
HICircleView *circleView = [[HICircleView alloc] initWithFrame:CGRectMake(0, 0, 100, 100)];
// init of circle view
- (id)initWithFrame:(CGRect)frame
{
self = [super initWithFrame:frame];
if (self) {
CAShapeLayer *borderLayer = [CAShapeLayer layer];
borderLayer.fillColor = [UIColor whiteColor].CGColor;
borderLayer.path = [UIBezierPath bezierPathWithOvalInRect:self.frame].CGPath;
borderLayer.strokeColor = [[UIColor redColor] CGColor];
borderLayer.lineWidth = 5;
[self.layer addSublayer:borderLayer];
}
return self;
}
Run Code Online (Sandbox Code Playgroud)
好的,谢谢你的回答.转移我:
CGRect rect = CGRectMake(3, 3, self.frame.size.width, self.frame.size.height);
borderLayer.path = [UIBezierPath bezierPathWithOvalInRect:rect].CGPath;
Run Code Online (Sandbox Code Playgroud)
并且制作了6个线宽.
Seb*_*ian 18
设置lineWidth
绘制一条线,其中实际路径恰好位于绘制线的中间.
如果您希望绘制的线与某些东西对齐,则必须将路径移动一半lineWidth
.
您可以使用- (void)applyTransform:(CGAffineTransform)transform
on 来移动路径UIBezierPath
并应用转换变换.
如果您希望将绘制的路径包含在某个区域中,则移动路径无济于事.在这种情况下,只需创建一个较小的路径 如果要绘制线宽为5的100ptx100pt矩形,则必须在95pt*95pt矩形(两侧2.5pt空间)中绘制路径.
您更愿意选择视图的边界属性进行计算.如果它的原点大于(0,0),则帧属性将无法正常工作.您可以使用CGRectInsets调整圆的矩形,而不是执行变换计算.这将自动将矩形定位在原始矩形的中心.
- (id)initWithFrame:(CGRect)frame
{
self = [super initWithFrame:frame];
if (self) {
CAShapeLayer *borderLayer = [CAShapeLayer layer];
borderLayer.fillColor = [UIColor whiteColor].CGColor;
CGFloat lineWidth = 5;
CGRect rect = CGRectInset(self.bounds, lineWidth / 2, lineWidth / 2);
borderLayer.path = [UIBezierPath bezierPathWithOvalInRect:rect].CGPath;
borderLayer.strokeColor = [[UIColor redColor] CGColor];
borderLayer.lineWidth = lineWidth;
[self.layer addSublayer:borderLayer];
}
return self;
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
9269 次 |
最近记录: |