タイトルが示すように、円を示す画像がたくさんあります。問題は、画像が正方形であることです。円の周りの白い部分を透明にしたいと思います。これは画像の 1 つです。
残念ながら、スタック オーバーフローの背景が白であるため、白い領域は表示されません。4 つの白い角を削除する可能性はありますか (円内の要素の一部が白である可能性があるため、すべての白い領域を削除する必要はありません)。
フォトショップでは、「魔法の杖」ツールを使用します。助けてくれてありがとう。
タイトルが示すように、円を示す画像がたくさんあります。問題は、画像が正方形であることです。円の周りの白い部分を透明にしたいと思います。これは画像の 1 つです。
残念ながら、スタック オーバーフローの背景が白であるため、白い領域は表示されません。4 つの白い角を削除する可能性はありますか (円内の要素の一部が白である可能性があるため、すべての白い領域を削除する必要はありません)。
フォトショップでは、「魔法の杖」ツールを使用します。助けてくれてありがとう。
角の半径を画像の幅または高さの半分に設定するだけです (もちろん、画像が正方形であると仮定します)。
#import <QuartzCore/QuartzCore.h>
imageView.layer.cornerRadius = imageView.bounds.size.width;
imageView.layer.masksToBounds = YES;
そして、(追加の)ボーダーが好きなら:
imageView.layer.borderWidth = 0.5f;
次に、コメントを読んで、このイメージを取得します。
UIGraphicsBeginImageContext(imageView.layer.bounds.size);
[imageView.layer renderInContext:UIGraphicsGetCurrentContext()];
UIImage* image = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
レンダリングされimage
たものは、現在のレイヤーのサイズとまったく同じです。
スケールアップ時のピクセル化を防ぐには、次のことを試してください。
BOOL opaque = NO;
short scale = [[UIScreen mainScreen] scale];
UIGraphicsBeginImageContextWithOptions(view.bounds.size, opaque, scale);
またはおそらく別のスケールで。