013995 ランダム
 HOME | DIARY | PROFILE 【ログイン】

てくてくのiphoneアプリ開発あれやこれや

PR

Rakuten Profile

設定されていません

Keyword Search

▼キーワード検索

Freepage List

Rakuten Card

Calendar

Favorite Blog

まだ登録されていません

Comments

コメントに書き込みはありません。

Headline News

2011年08月27日
XML
カテゴリ:カテゴリ未分類

丸くすると影がつかない。
影をつけると丸くできない

QuartzCoreを使えば
CALayerのshadowとcornerRadiusを変更できるが、同時には適用できない。
角丸を有効にするためにsetMasksToBoundsをYESにすると、
shadowが無視されるようだ。

なので、影用のlayerを別に用意することにした。





TKImageView.h

/*********************************************************************/
/* interface              */
/*********************************************************************/
@interface TKImageView : UIView {
UIImageView *contentsView;
CALayer *shadow;
}
- (void)setImage:(UIImage *)image;
@end



TKImageView.m


#define CornerRadius 3

/*********************************************************************/
/* private interface */
/*********************************************************************/
@interface TKImageView(private)

@property(nonatomic, readonly)UIImageView *contentsView;
@property(nonatomic, readonly)CALayer *shadow;
@end

/*********************************************************************/
/* implmentation */
/*********************************************************************/
@implementation TKImageView
#pragma mark -

- (void)dealloc {
[contentsView release];
[shadow release];
[super dealloc];
}


- (void)layoutSubviews {
[self.contentsView setFrame:self.bounds];
[self.shadow setFrame:self.layer.bounds];
}
#pragma mark -
- (void)setImage:(UIImage *)image {
[self.contentsView setImage:image];
}

@end

/*********************************************************************/
/* private implementation */
/*********************************************************************/
@implementation TKImageView(private)
#pragma mark - property
@dynamic contentsView;
@dynamic shadow;
- (UIImageView *)contentsView {
if (contentsView) return contentsView;
contentsView = [[UIImageView alloc] init];
[contentsView setBackgroundColor:[UIColor blackColor]];
[contentsView.layer setMasksToBounds:YES];
[contentsView.layer setCornerRadius:CornerRadius];

[self addSubview:contentsView];
return contentsView;
}
- (CALayer *)shadow {
if (shadow) return shadow;
shadow = [[CALayer alloc] init];
[shadow setBackgroundColor:[UIColor blackColor].CGColor];
[shadow setCornerRadius:CornerRadius];
[shadow setShadowColor:[[UIColor blackColor] CGColor]];

[shadow setShadowRadius:1.0f];
[shadow setShadowOffset:CGSizeMake(1.5f, 2.3f)];
[shadow setShadowOpacity:0.7f];

[self.layer insertSublayer:shadow
below:self.contentsView.layer
];
return shadow;
}

@end









Last updated  2011年08月27日 19時51分26秒
コメント(0) | コメントを書く
Powered By 楽天ブログは国内最大級の無料ブログサービスです。楽天・Infoseekと連動した豊富なコンテンツや簡単アフィリエイト機能、フォトアルバムも使えます。デザインも豊富・簡単カスタマイズが可能!

Copyright (c) 1997-2017 Rakuten, Inc. All Rights Reserved.