0

これが機能しなくなった理由はわかりませんが、デバイスの一部を描画しようとすると、このコードのチャンクがデバイスをクラッシュさせます。私はコアグラフィックスに慣れていないので、ポインタや提案があれば非常に役立ちます。ありがとう!

// Style
CGContextRef context = UIGraphicsGetCurrentContext();

// Colors
CGColorRef fillBox = [UIColor colorWithRed:250.0/255.0 green:250.0/255.0 blue:250.0/255.0 alpha:1.0].CGColor;
CGColorRef fillBoxShadow = [UIColor colorWithRed:77.0/255.0 green:77.0/255.0 blue:77.0/255.0 alpha:1.0].CGColor;

CGRect box = CGRectMake(5, 5, self.frame.size.width - 10, self.frame.size.height - 10);
// Shadow
CGContextSetShadowWithColor(context, CGSizeMake(0, 0), 1.0, fillBoxShadow);
CGContextAddRect(context, box);
CGContextFillPath(context);
// Box
CGContextSetFillColorWithColor(context, fillBox);
CGContextAddRect(context, box);

CGContextFillPath(context);
4

2 に答える 2

2

プロジェクトでARCを使用している場合は、次の2行が問題の一部である可能性があります。

CGColorRef fillBox = [UIColor colorWithRed:250.0/255.0 green:250.0/255.0 blue:250.0/255.0 alpha:1.0].CGColor;
CGColorRef fillBoxShadow = [UIColor colorWithRed:77.0/255.0 green:77.0/255.0 blue:77.0/255.0 alpha:1.0].CGColor;

ARCはUIColorオブジェクトをリリースしているため、CGColorRefをリリースしています。CGColorRefを保持し、使い終わったら解放する必要があります。

私は次のようなコードを書きます:

UIColor *fillBox = [UIColor colorWithRed:250.0/255.0 green:250.0/255.0 blue:250.0/255.0 alpha:1.0];
UIColor *fillBoxShadow = [UIColor colorWithRed:77.0/255.0 green:77.0/255.0 blue:77.0/255.0 alpha:1.0];

次に、メソッドの後半でfillBox.CGColorとfillBoxShadow.CGColorを使用します。

于 2013-02-01T15:37:34.027 に答える
0

する代わりに

CGContextAddRect(context, box);
CGContextFillPath(context);

を使用してみてくださいCGContextFillRect

事前にコンテキストに追加していないパスを入力することはできません。

注:あなたはすることができます

CGContextAddPath(context, [UIBezierPath pathWithRect:box].CGPath);
CGContextFillPath(context);

しかし、それは単に長方形を埋めるのに比べて少しやり過ぎです。

pathWithRect:(構文についてはわかりませんが、存在します。)

于 2013-02-01T15:37:30.083 に答える