RubyMotion で CGGradient を使ってグラデーションを作る際に 2 点ほどポイントがありそうです。
1. Pointer クラスを使用する
CGGradient オブジェクトを作成する際に使用する関数 CGGradientCreateWithColorComponents
は CGFloat
型の配列を受け取ります(変数 components
, locations
に注目してください)。
1 2 3 4 5 6 |
|
もし引数が Ruby の Array クラスや、Objective-C の NSArray を受け取るなら話は簡単なのですが、ここでは CGFloat
型の配列なので、RubyMotion で用意されている Pointer クラスを使い CGFloat
型の配列と同等のものを作ります。以下のようなコードになります。
1
|
|
2. kCGGradientDrawsXXXX 定数
CGGradient では kCGGradientDrawsBeforeStartLocation
と kCGGradientDrawsAfterEndLocation
という定数が用意されています。どちらも小文字から始まる定数です。
RubyMotion では英小文字から始まる定数は、一文字目を大文字に書き換えて利用してあげる必要があります。
kCGGradientDrawsAfterEndLocation
は KCGGradientDrawsAfterEndLocation
になります。
いざ動かしてみる
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 |
|
次のような View が表示されるはずです。