이미지 뷰에 그림자 효과를 주기위해 알아본 결과 CALayer 의 Shadow 속성을 사용하면 원하는 형태의 그림자를 만들수 있다.
CALayer * layer = self.imageView.layer;
layer.backgroundColor = COLOR_BLACK.CGColor;
layer.shadowOffset = CGSizeMake(10, 10);
layer.shadowRadius = 10.0f;
layer.shadowColor = COLOR_BLACK.CGColor;
layer.shadowOpacity = 0.6f;
layer.backgroundColor = COLOR_BLACK.CGColor;
layer.shadowOffset = CGSizeMake(10, 10);
layer.shadowRadius = 10.0f;
layer.shadowColor = COLOR_BLACK.CGColor;
layer.shadowOpacity = 0.6f;
[self.layer addSublayer:layer];
imageView에서 layer 프로퍼티를 사용하여 Shadow효과를 입력한 뒤 imageView의 부모 뷰에 AddSubView를 하게되면 그림자 효과를 얻을 수 있다.
ScrollView와 같이 사용하게 되면 줌/팬 이벤트와 동시에 사용할 수 있다.
ScrollView 같은 경우 layoutSubview 메소드에서 이미지뷰의 위치를 정하게 되는데 이때 위의 코드를 함께 넣어주면 그림자 효과를 적용할수 있다.
- (void)layoutSubviews
{
[super layoutSubviews];
// center the image as it becomes smaller than the size of the screen
CGSize boundsSize = self.bounds.size;
CGRect frameToCenter = self.imageView.frame;
{
[super layoutSubviews];
// center the image as it becomes smaller than the size of the screen
CGSize boundsSize = self.bounds.size;
CGRect frameToCenter = self.imageView.frame;
frameToCenter.size.width = round(frameToCenter.size.width*100)/100;
frameToCenter.size.height = round(frameToCenter.size.height*100)/100;
// center horizontally
if (frameToCenter.size.width < boundsSize.width) {
frameToCenter.origin.x = (boundsSize.width - frameToCenter.size.width) / 2;
}else {
frameToCenter.origin.x = 0.1;
}
// center vertically
if (frameToCenter.size.height < boundsSize.height) {
frameToCenter.origin.y = (boundsSize.height - frameToCenter.size.height) / 2;
} else {
frameToCenter.origin.y = 0.1;
}
self.imageView.frame = frameToCenter;
if(self.shadowState == YES){
CALayer * layer = self.imageView.layer;
layer.backgroundColor = COLOR_BLACK.CGColor;
layer.shadowOffset = CGSizeMake(10, 10);
layer.shadowRadius = 10.0f;
layer.shadowColor = COLOR_BLACK.CGColor;
layer.shadowOpacity = 0.6f;
[self.layer addSublayer:layer];
}
}
frameToCenter.size.height = round(frameToCenter.size.height*100)/100;
// center horizontally
if (frameToCenter.size.width < boundsSize.width) {
frameToCenter.origin.x = (boundsSize.width - frameToCenter.size.width) / 2;
}else {
frameToCenter.origin.x = 0.1;
}
// center vertically
if (frameToCenter.size.height < boundsSize.height) {
frameToCenter.origin.y = (boundsSize.height - frameToCenter.size.height) / 2;
} else {
frameToCenter.origin.y = 0.1;
}
self.imageView.frame = frameToCenter;
if(self.shadowState == YES){
CALayer * layer = self.imageView.layer;
layer.backgroundColor = COLOR_BLACK.CGColor;
layer.shadowOffset = CGSizeMake(10, 10);
layer.shadowRadius = 10.0f;
layer.shadowColor = COLOR_BLACK.CGColor;
layer.shadowOpacity = 0.6f;
[self.layer addSublayer:layer];
}
}
'iOS' 카테고리의 다른 글
UIButton Title 위치 정하기 (0) | 2011.10.26 |
---|---|
UIButon 이벤트 처리 (0) | 2011.10.25 |
UIImage 회전 관련 링크 (0) | 2011.10.11 |
simbolicatecrash 위치 (0) | 2011.10.06 |
SimpleURLConnections ios 5 문제 해결 (0) | 2011.09.28 |