0
UIBezierPath bezierPathWithArcCenter
で円を描きたいと思っています。次のように私の見解のinitWithFrame
は次のとおりです。UIBezierPath bezierPathWithArcCenterが正しく中央に配置されていません
- (instancetype)initWithFrame:(CGRect)frame
{
self = [super initWithFrame:frame];
if(self == nil) {
return nil;
}
self.circleLayer = [CAShapeLayer layer];
self.circleLayer.fillColor = UIColor.clearColor.CGColor;
self.circleLayer.strokeColor = UIColor.blackColor.CGColor;
self.circleLayer.lineWidth = 4;
self.circleLayer.bounds = self.bounds;
self.startAngle = 0.0;
self.endAngle = M_PI * 2;
CGPoint center = CGPointMake(self.frame.size.width * 0.5, self.frame.size.height * 0.5);
CGFloat radius = self.frame.size.height * 0.45;
self.circleLayer.path = [UIBezierPath bezierPathWithArcCenter:center radius:radius startAngle:self.startAngle endAngle:self.endAngle clockwise:YES].CGPath;
[self.layer addSublayer:self.circleLayer];
self.backgroundColor = UIColor.greenColor;
return self;
}
私はそれが私の見解を中心に黒丸を生み出すと期待されます。ただし、実際の出力は次のようになります。
私は間違っていますか?任意の連続した起動は、それが添付された画像のように描かれているにつながる -
EDIT 奇妙な部分は、それがアプリの新規インストール後に正しく描画だということです。どうして?
このコードをdrawRectメソッドで使用してください。 –
'self.circleLayer.frame = self.bounds;'? – Larme
@Larmeでも、それはサブレイヤなので、 '(0、0)'の起源が必要です。または私は間違っていますか? –