頭と尻尾はくれてやる!

パソコンおやじのiPhoneアプリ・サイト作成・運営日記


画像に影を付けたいのでいろいろプロパティをいじってみた

影のある画像
↑こういうボタンの画像に影がありますが、こういうのを作りたくなったのでいろいろと試してみました(もちろんこの画像がどのように作成されているのかはわかりません)。

使った画像がこれ→基本となるpng画像
円の外側が透過したpng画像です。

png画像を表示する基本的なコードはこちら :
UIImage *image = [UIImage imageNamed:@"image.png"];
UIImageView *imageView = [[UIImageView alloc] initWithImage:image];
imageView.frame = CGRectMake(xx, yy, image.size.width, image.size.height);
[self.view addSubview:imageView];
[imageView release];

もちろんこれだけでは影はできません。
影を付ける方法はいくつかあるようですが、ここではCALayerクラスのプロパティをいじってみました。

(1) shadowOpacity
この状態から、shadowOpacityプロパティのみ次のように設定してみました :
imageView.layer.shadowOpacity = opacity;
結果は次の通り :

shadowOpacity

なるほど、この値を設定するだけで影ができてる、、、一撃じゃないかっ!
なお、この値のデフォルト値はゼロです。
それで、何もしない場合は影ができないんだな。


(2) shadowOffset
このプロパティはCGSize型なので次のように設定できます :
imageView.layer.shadowOffset = CGSizeMake(w, h);
結果はこんな感じ :

shadowOffset
*shadowOpacity = 0.5

ほー、確かに影の位置が変わってら。
なお、このプロパティのデフォルトは(0.0,-3.0)。


(3) shadowRadius
なんで影に"半径"の設定があるんだよ?と思ったら違うんですね。
ぼかし(blur)の効果に影響する値なんですね。
このプロパティは次のように設定します :
imageView.layer.shadowRadius = radius;
この値を変えるとほれこの通り :

shadowRadius
*shadowOpacity = 1.0
*shadowOffset = (0, 5)

確かにぼけ具合が変わりますな。
デフォルトで3.0です。


(4) shadowColor
このプロパティで影の色も変えることができるんですね。
コードでは次のように設定します。UIColorじゃありません :
imageView.layer.shadowColor = [UIColor redColor].CGColor;

shadowColor
*shadowOpacity = 1.0
*shadowOffset = (0, 5)
*shadowRadius = 3.0

なるほど。でも赤い影は使わないか。
デフォルトは黒色。


(5) masksToBounds
このプロパティをセットしているコードを見かけたので試してみました。
コードはこんな感じ :
imageView.layer.masksToBounds = YES;
結果がこれ :

masksToBounds
*shadowOpacity = 1.0
*shadowOffset = (0, 5)
*shadowRadius = 3.0

なるほど、そいういうことか。 自分の場合、画像の枠外にも影を描いて欲しいからNOでいいわけだけど、デフォルトでもともとNOなのでスルーでOKだな。

<< なぜかrenderInContext:でコールされるCATiledLayerの描画部分  TopPage  renderInContext:メソッドはマスクを無視する >>

コメント


管理者にだけ表示を許可する
 

トラックバック

トラックバックURL
http://ringsbell.blog117.fc2.com/tb.php/494-1b3a31c8




Copyright ©頭と尻尾はくれてやる!. Powered by FC2 Blog. Template by eriraha.

FC2Ad