2011-05-25 9 views
3

アップルはほとんどのUIKitでこれを行います。要素にtintColorを渡すだけで、自動的に(ほとんどの場合はとにかく)勾配が自動的に生成されます。動的tintColorからCGGradientを生成

私はthis gloss gradient functionに出くわしましたが、結果は私が探しているものから遠いです。 "lighterColor"や "darkerColor"などのメソッドを追加するUIColor extensionsもありますが、グラデーションを生成するために作成された疑いがあるため、ぼんやりとしたグラデーションが生成されることはありません。

Appleがそれを行う方法と同様の方法でこれを行うサードパーティのクラスまたは機能がありますか?

答えて

4

ダイナミックティンティングを行う方法はたくさんありますが、最も簡単な方法は、あらかじめレンダリングされたグレースケール画像を描画してから、最初にkCGBlendModeOverlayを使ってティントカラーを描画することです。 「オーバーレイ」ブレンドモードはPhotoshopのように動作し、特に色付けに便利です。ここで

たちは、カスタム彩色のナビゲーションバーを描く方法は次のとおりです。

- (void)drawRect:(CGRect)rect { 
    [[UIImage imageNamed:@"NavBar.png"] drawInRect:rect]; // grayscale untinted version 
    UIColor *tint = [UIColor colorWithRed:1 green:0.5 blue:0.5 alpha:1]; // arbitrary 
    [tint set]; 
    UIRectFillUsingBlendMode(rect, kCGBlendModeOverlay); 
} 

あなただけのオーバーレイブレンドモードで塗りつぶしとしてあなたの色でレイヤーを作成することによって、Photoshopで直接色合いの色をプレビューすることができます。 UINavigationBarや友人の着色のための

Appleの特定の技術は、システムのアートワークファイルで見つかった「UITintedTopBarHighlightFlat.png」のような名前のプリレンダリング勾配画像のプラスオーバーレイを埋める色合いの色の組み合わせのようです。

関連する問題