2013-03-27 54 views
1

我正在实现一个自定义的UIView来显示在UIScrollview中。问题是,我需要的观点,所以我做砸一个阴影:IOS - 带影子的Quartzcore自定义UIView

#import <QuartzCore/QuartzCore.h> 
@implementation CustomView 

-(void)setupView{ 


    self.layer.shadowColor = [UIColor blackColor].CGColor; 
    self.layer.shadowOpacity = 0.5; 
    self.layer.shadowRadius = 1; 
    self.layer.shadowOffset = CGSizeMake(.6f, .6f); 
    self.layer.cornerRadius = 2; 

    [...] 

} 

-(id)initWithFrame:(CGRect)frame{ 
    if((self = [super initWithFrame:frame])){ 
    [self setupView]; 
    } 

    return self; 
} 

[...] 

的一点是,当我生成并运行此滚动视图是如此缓慢,我只是需要删除那些行,我被盗号“self.layer”和滚动视图又快又平滑。

什么是向我的自定义视图中添加阴影的正确方法?

回答

2

这与移动时UIView必须执行的所有重绘有关。

如果栅格化将成为方式平滑层,这应该做的伎俩:

​​

你可以尝试添加了阴影路径:

self.layer.shadowPath = [UIBezierPath bezierPathWithRect:self.bounds]; 

这可能有助于更多一点。

+0

这是一种更流畅但仍不流畅的方式。在这之后有什么我可以做的? – luca 2013-03-27 12:48:05

+0

并不是真的,这会将图层光栅化(将其转换为图像),然后移动并在您不再绘制时重绘。您正在测试您的应用的设备类型是什么?改变了我的答案,包括阴影路径。 – rckoenes 2013-03-27 13:09:49

+0

好吧这有点奇怪。iPhone 4 – luca 2013-03-27 13:13:50