0

このリンクから次のコードを見つけました:iphone-Core Graphics / Quartz 2Dで角の丸い長方形を描く方法は?- スタックオーバーフロー

これがコードです。

- (UIImageView*)roundImageView:(CGFloat)rad {

    CGContextRef context = UIGraphicsGetCurrentContext();

    CGContextSetRGBStrokeColor(context, 1.0, 1.0, 1.0, 1.0); 

    CGRect rrect = ivprofilePicture.bounds;

    CGFloat radius = rad; 

    CGFloat minx = CGRectGetMinX(rrect), midx = CGRectGetMidX(rrect), maxx = CGRectGetMaxX(rrect); 

    CGFloat miny = CGRectGetMinY(rrect), midy = CGRectGetMidY(rrect), maxy = CGRectGetMaxY(rrect); 

    CGContextMoveToPoint(context, minx, midy); 

    CGContextAddArcToPoint(context, minx, miny, midx, miny, radius); 

    CGContextAddArcToPoint(context, maxx, miny, maxx, midy, radius); 

    CGContextAddArcToPoint(context, maxx, maxy, midx, maxy, radius); 

    CGContextAddArcToPoint(context, minx, maxy, minx, midy, radius); 

    CGContextClosePath(context); 

    CGContextDrawPath(context, kCGPathFillStroke);



    UIImageView *imageView;

    return imageView;

}

私はそれを次のように呼びます:

myImageView = [self roundImageView:10];

問題は、このコードからUIImageViewをどのように返すかです。radiusパラメーターを受け取り、UIImageViewを返すメソッドを既に作成しました。上記のコードのrectは、元のUIImageViewの境界にもすでに設定されています。

ただし、このコードから角が丸いUIImageViewをどのように返すのかわかりません。

誰かアイデアはありますか?

ありがとう!

4

3 に答える 3

1

画像のコンテキストを開始し、そこに何かを描いたので、現在の画面からスクリーンショットを撮る方法と似ていると思いますか?

UIImage* imageView = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();

次に、通常どおりに新しいUIImageViewを返しinitWithImageます。ただし、画像を描画するたびに新しいUIImageViewを作成する必要はないと思います。代わりに戻っUIImage*てUIImageViewをリサイクルできます。

于 2012-06-03T03:18:42.933 に答える
0

すべてのUIImageViewに丸みを帯びた角を追加します

UIImageの丸みを帯びた角

これがあなたの質問に関連していると私が思ういくつかのリンクです。

于 2012-06-03T02:54:08.947 に答える
0

UIImageViewを作成するときは、次のようにしてみてください。

UIImageView* imageView = [[[UIImageView alloc] init /*or whatever other init method*/] autorelease];
return imageView;
于 2012-06-03T02:58:12.440 に答える