2016-08-12 7 views
-1

UIBezierPathを使用してアーチを描画しようとしています。エラーや警告はありません。明らかなバグは見られませんが、それは表示されません。これは私のコードです:描画することを拒否するUIBezierパス

- (void)drawRect:(CGRect)rect {  

CGFloat a = 10; 

CGFloat width = CGRectGetWidth(self.bounds); 
CGFloat height = CGRectGetHeight(self.bounds); 

CGPoint center = CGPointMake(width/2, height/2); 
CGFloat radius = MAX(width, height); 
CGFloat archWidth = 18; 
CGFloat archLengthPerA = 5; 
CGFloat startAngle = 3 * M_PI /2; 
CGFloat endAngle = archLengthPerA * a + startAngle; 

UIBezierPath* path = [UIBezierPath bezierPath]; 
[path addArcWithCenter:center 
         radius:radius 
        startAngle:startAngle 
        endAngle:endAngle 
        clockwise:YES]; 

path.lineWidth = archWidth; 
[[UIColor colorWithRed:255 green:17 blue:0 alpha:1.0] setStroke]; 
[path stroke]; 
} 

私がテストするために、別のビューでそれを入れて、それはそう何がそれをどうするということです_myStringに墜落しましたか?私はブレークポイントを追加して、それがなくても動作するかどうかを確認しようとしましたが、もう一度クラッシュしました。なぜそれが動作していないすべてのアイデア?

+0

工程との間の値でCGFloatことと '_myString'と' A'と 'startAngle'と' endAngle'が持っている値かを見るべきです。おそらく 'a'は0なので、' startAngle'は 'endAngle'と同じです。したがって、サイズゼロの弧を求めています。もちろん、何も描画しません。例えば ​​'CGFloat a = 1.0; 'のように、' a'が異なる値であるときに何が起こるかをチェックするためにコードを簡単に変更することができます。 –

+0

@KurtRevisはちょうどチェックしました、そして、彼らはそうではない値を持っています –

+0

だから_what値have have_?私たちに[MCVE](http://stackoverflow.com/help/mcve)を与えてください。 –

答えて

1

の値が大きすぎるため、円弧がビューの外側に描画されます。

小さくしてください。

CGFloat radius = MIN(width/2, height/2); 
0

はまた、あなたの色値が正しくない:例えば

[[UIColor colorWithRed:255、緑:17、青:0アルファ:1.0] setStrokeメソッド]。そのクラスのメソッドの

色成分は、デバッガとそれを0.0と1.0

関連する問題