このブログbackgroundView
で見つけたコードに基づいて、グループ化された UITableViewCell をグラデーションでカスタマイズしようとしています。cell.backgroundView で使用する UIView のサブクラスです。
背景のグラデーションの色は、元のコードでは次のように定義されています。
#define TABLE_CELL_BACKGROUND { 1, 1, 1, 1, 0.866, 0.866, 0.866, 1} // #FFFFFF and #DDDDDD
そしてdrawRect
、サブクラス化された backgroundView で次のように使用されます。
CGFloat components[8] = TABLE_CELL_BACKGROUND;
myGradient = CGGradientCreateWithColorComponents(myColorspace, components , locations, 2);
グラデーションの開始色と終了色を設定する関数を実装しようとしています。これは 2 つの UIColors を取り、 float startAndEndColors[8]
後で使用するためにグローバル float 配列 (.h / @interface 内) に入力します。
-(void)setColorsFrom:(UIColor*)start to:(UIColor*)end{
float red = 0.0, green = 0.0, blue = 0.0, alpha =0.0, red1 = 0.0, green1 = 0.0, blue1 = 0.0, alpha1 =0.0;
[start getRed:&red green:&green blue:&blue alpha:&alpha];
[end getRed:&red1 green:&green1 blue:&blue1 alpha:&alpha1];
//This line works fine, my array is successfully filled, just for test
float colorsTest[8] = {red, green, blue, alpha, red1, green1, blue1, alpha1};
//But for this one, I just have an error.
//"Expected expression"
// \
// v
startAndEndColors = {red, green, blue, alpha, red1, green1, blue1, alpha1};
}
しかし、割り当て時にこのエラー「Expected expression」がスローされます。
で試してみてCGFloat
、必死に random を追加const
しましたが、すぐにアイデアがなくなりました。
なぜこの方法で float 配列を埋めることができないのですか? 私は何を間違っていますか?