24/7 twenty-four seven

iOS/OS X application programing topics.

グラフィックスコンテキストに影を設定する CGContextSetShadow 関数の挙動が変わっている

以前に「UILabelに影をつける - 24/7 twenty-four seven」という記事で紹介した CGContextSetShadow 関数の挙動が iPhone OS 3.2 (iPad と iOS 4.0) から変わっています。
具体的には影の付く方向が逆になりました。

なので、以前の記事をコードをそのまま実行すると上のように右上に影が落ちるという悲しい結果になります。


修正方法は、y 方向のオフセットパラメータの指定の符号を反転します。

CGContextSetShadow(context, CGSizeMake(4.0f, -4.0f), 6.0f);
CGContextSetShadow(context, CGSizeMake(4.0f, 4.0f), 6.0f);

これで意図したとおりに表示されるようになりました。