サンプルコードは次のとおりです:
//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;
}
わかりました。回答ありがとうございます。iをシフトするには:
CGRect rect = CGRectMake(3, 3, self.frame.size.width, self.frame.size.height);
borderLayer.path = [UIBezierPath bezierPathWithOvalInRect:rect].CGPath;
そして線幅を6にしました。
ベストアンサー1
を設定するとlineWidth
線が描画され、実際のパスはその描画された線のちょうど中央になります。
描画した線を何かに揃えたい場合は、パスを半分だけシフトする必要がありますlineWidth
。
- (void)applyTransform:(CGAffineTransform)transform
onを使用してパスをシフトしUIBezierPath
、変換を適用できます。
描画したパスを特定の領域内に収めたい場合、パスを移動しても効果はありません。その場合は、より小さなパスを作成してください。線幅 5 で 100ptx100pt の四角形を描画する場合は、95ptx95pt の四角形 (両側に 2.5pt のスペース) にパスを描画する必要があります。