5

UIImagePickerControllerカメラの「ビュー」自体に2つのグリッド/パターンのいずれかを含むカスタムオーバーレイを使用して、カメラをユーザーに提示するために使用するアプリを作成しています。

グリッド自体はオーバーレイに追加される.pngファイルであり、UIImageView非常に複雑なので、コードでグリッドを描画することは避けたいと思います。 。

さまざまな色のグリッドを提供できるようにしたいと思います。明らかな解決策は、さまざまな色でより多くの.png画像を作成することですが、色ごとに4つの別々の画像(グリッドごとに通常の画像と網膜)が必要になるため、すぐに多くのアセットが追加されます。

理想的な解決策は、グリッドを白/グレーで作成し、それに色合いを適用して適切に色付けすることです。

それは可能ですか?または、別の解決策を探す必要がありますか?

4

1 に答える 1

8

私をiPhoneに向けてくれたAnanthに感謝します-画像をどのように着色しますか?

質問で提案されているように、willc2の回答に変更を加えて、このメソッドをコードに追加しました。

-(UIImage *)colorizeImage:(UIImage *)baseImage color:(UIColor *)theColor {
    UIGraphicsBeginImageContext(baseImage.size);

    CGContextRef ctx = UIGraphicsGetCurrentContext();
    CGRect area = CGRectMake(0, 0, baseImage.size.width, baseImage.size.height);

    CGContextScaleCTM(ctx, 1, -1);
    CGContextTranslateCTM(ctx, 0, -area.size.height);
    CGContextSaveGState(ctx);
    CGContextClipToMask(ctx, area, baseImage.CGImage);
    [theColor set];
    CGContextFillRect(ctx, area);
    CGContextRestoreGState(ctx);
    CGContextSetBlendMode(ctx, kCGBlendModeMultiply);
    CGContextDrawImage(ctx, area, baseImage.CGImage);
    UIImage *newImage = UIGraphicsGetImageFromCurrentImageContext();
    UIGraphicsEndImageContext();
    return newImage;
}

...そして私は自分が求めているものを正確に手に入れています。

于 2012-06-29T08:35:19.757 に答える