1

私のアプリには、世界中のさまざまな都市の画像がたくさんあります。問題は、これらの画像の一部が右下隅の白いラベルでうまく機能しないことです。ぼかす方法があるのではないかと考えていました。または、すべての画像がラベルで見栄えがするように、角のみをシェーディングします。例: (はい、ラベルが都市と一致しないことはわかっています。すべての都市をまだインポートしていません。)

そっちの方が良さそうです。

ここに画像の説明を入力

しかし、これはいくつかのシェーディングを使用できます。とにかく、UIImageView の右下隅にある種のぼかし/マスキング シェード効果を持たせて、何百もの個々の写真をフォトショップすることなく、すべての画像を美しく見せることができますか? どうもありがとう。

4

2 に答える 2

1

CILinearGradientを使用して、1 つのコーナーのみでケラレ効果を得ることができます。

ここに画像の説明を入力

- (CIImage*) processPhoto:(CIImage*)image {
    CGFloat width = [image extent].size.width;
    CGFloat height = [image extent].size.height;

    CIFilter* gradient = [CIFilter filterWithName:CILinearGradient];

    [gradient setValue:
        [CIVector vectorWithX:width*0.75 Y:height*0.5]
                forKey:@"inputPoint0"];

    [gradient setValue:
        [CIColor colorWithRed:0.5 green:0.5 blue:0.5 alpha:0]
                forKey:@"inputColor0"];

    [gradient setValue:
        [CIVector vectorWithX:width*0.85 Y:0]
                forKey:@"inputPoint1"];

    [gradient setValue:
        [CIColor colorWithRed:0 green:0 blue:0 alpha:0.7]
                forKey:@"inputColor1"];

    CIImage* croppedImage =
        [gradient.outputImage imageByCroppingToRect:[image extent]];

    CIFilter* composite = [CIFilter filterWithName:CIHardLightBlendMode];
    [composite setValue:croppedImage forKey:kCIInputImageKey];
    [composite setValue:image forKey:kCIInputBackgroundImageKey];
    return composite.outputImage;
}

最適な結果を得るには、エンドポイントと勾配をもう少し微調整することをお勧めします。

または、四角い外観にしたい場合は、テキストと画像の間に UIView を貼り付けて、背景を黒、不透明度を ~0.4 にすることができます。

ここに画像の説明を入力

設計的には、その方が良いアプローチだと思いますが、コードはあまり面白くありません!

于 2013-01-30T05:15:41.460 に答える
-1

画像の CALayer プロパティを変更できます..これは非常に効率的で強力です。これを試してください:

UIView *view = [[UIView alloc] initWithFrame:frame];

view.layer.shadowColor = [[UIColor COLOR] CGColor];

view.layer.shadowRadius = 5.0;

view.layer.cornerRadius = 5.0;

于 2013-01-30T05:13:12.803 に答える