做項目遇到一個問題 就是在圓角的按鍵上加陰影失敗了 然後就有了這個日志。
讓UIView圓角顯示很簡單,隻需要三行代碼
CALayer * layer = [avatarImageView layer];
[layer setMasksToBounds:YES];
[layer setCornerRadius:9.0];
但是,如給給圓角view加陰影,傳統加陰影的方法是不行的,
傳統的方法就是:
avatarImageView.layer.shadowColor = [UIColor blackColor].CGColor;
avatarImageView.layer.shadowOffset = CGSizeMake(0, 1);
avatarImageView.layer.shadowOpacity = 1;
因為setMasksToBounds表示對frame外的内容進行了裁減,隻可顯示frame内的内容。由于這種方法加的陰影在frame外,是以被裁減了。
傳統方法不行,那我們可以把圓角的avatarImageView放到一個大小與它一樣的的UIView中,讓這個view有陰影,那效果看起來就一樣了。
CGRect rect;
rect = CGRectMake(0, 0, 48, 48);
avatarImageView = [[UIImageView alloc] initWithFrame:rect];
avatarImageView.image = [UIImage imageNamed:@"test.png"];
//Round the corners
//Add a shadow by wrapping the avatar into a container
UIView * shadow = [[UIView alloc] initWithFrame: rect];
avatarImageView.frame = CGRectMake(0,0,rect.size.width, rect.size.height);
// setup shadow layer and corner
//陰影
shadow.layer.shadowColor = [UIColor blackColor].CGColor;
shadow.layer.shadowOffset = CGSizeMake(4, 1);//偏移量
shadow.layer.shadowOpacity = 0.8;//透明度
shadow.layer.shadowRadius = 4;//陰影半徑
shadow.clipsToBounds = NO;
btn.layer.cornerRadius=40;
btn.clipsToBounds=YES;
// combine the views
[shadow addSubview: avatarImageView];
圓角陰影效果就出來了。
本文轉自 卓行天下 51CTO部落格,原文連結:http://blog.51cto.com/9951038/1615466,如需轉載請自行聯系原作者