2016-08-07 21 views
1

だから現在 - 私はTableViewControllerでの作業が、私は、画像TableViewCell背景色グラデーション

enter image description here

に示すように、各セルの勾配テーブルビューのようになりたい達成するために何か良い方法はありますこれは私がテーブルを埋める配列のサイズに基づいていますか?

答えて

2

2色の間で補間する場合は、各RGBカラーコンポーネント間で補間することができます(これはHSBでも行うことができます)。

開始色と終了色を定義します。あなたcellForRowAtIndexPathに、

var data = [/* ... */] 
let steps = data.count > 1 ? CGFloat(data.count - 1) : 1.0 
let rStep = (endColor.red - startColor.red)/steps, 
    gStep = (endColor.green - startColor.green)/steps, 
    bStep = (endColor.blue - startColor.blue)/steps, 
    aStep = (endColor.alpha - startColor.alpha)/steps 

最後:

typealias Color = (red: CGFloat, green: CGFloat, blue: CGFloat, alpha: CGFloat) 

let startColor: Color = (red: 0.0/255, green: 114.0/255.0, blue: 96.0/255.0, alpha: 1.0) 
let endColor: Color = (red: 10.0/255.0, green: 188.0/255.0, blue: 161.0/255.0, alpha: 1.0) 

は、ステップの数と各色成分のステップサイズを計算します。私は、タプル表現を選択した

let rowIdx = CGFloat(indexPath.row) 
myCell.backgroundColor = UIColor(red: startColor.red + rowIdx * rStep, green: startColor.green + rowIdx * gStep, blue: startColor.blue + rowIdx * bStep , alpha: startColor.alpha + rowIdx * aStep) 

あなたの細胞場合もちろん、各カラーコンポーネントのステップサイズを再計算したいと思っています。遊び場で

結果:

enter image description here

+0

素晴らしい回答ありがとう!もう1つの質問、2番目のステップ、それらの計算はすべてどこで宣言するのですか?私はエラーを投げかけているので、これを求めています "インスタンスのメンバー 'categories'は 'HomeVC'タイプでは使用できません" –

+1

@CesarMtz各ステップ変数をビュー・コントローラーのインスタンス変数として保持し、データ・カウントが変更された場合は更新することができます。その場合、計算を 'viewDidLoad'によって呼び出される関数に入れることができます。唯一のことは、_every_ 'cellForRowAtIndexpath'のためにそのコードを呼びたくないということです。データサイズが変化したときにステップサイズが変わるだけなので、不要な計算をしてしまうからです。 –

+0

恐ろしいありがとう!! –

関連する問題