IOS - 带有阴影的 Quartzcore 自定义 UIView

标签 ios uiview nib shadow quartz-core

我正在实现一个自定义 UIView 以显示在 UIScrollview 中。问题是我需要 View 来投影,所以我做了:

#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;
}

[...]

重点是,当我构建并运行它时, ScrollView 非常慢,我只需要删除我破解“self.layer”的那些行, ScrollView 就会再次变得快速流畅。

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

最佳答案

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

如果您栅格化图层,它将变得更加平滑,这应该可以解决问题:

self.layer.rasterizationScale = [UIScreen mainScreen].scale;
self.layer.shouldRasterize = YES;

您可以尝试添加影子路径:

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

这可能会有所帮助。

关于IOS - 带有阴影的 Quartzcore 自定义 UIView,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15658432/

相关文章:

javascript - 使用 nsstring 编码

ios - 在 iOS 上强制回收 JavaScriptCore 虚拟机的垃圾

ios - 使用自定义顺序对 NSArray 进行排序

iphone - SIGABRT @ [self.window addSubview :viewController. View ];仅在设备上

ios - 限制反向地理定位 - kCLErrorDomain Code=2

swift - bezierpath View 上的阴影为角落添加了奇怪的笔触

ios - 如何在 UIView 中屏蔽 UIImage View ?

objective-c - UIView 和 UIImage 预加载

iphone - 如何创建一个具有可由多个 ViewController 使用的关联 View 类的 Nib

ios - 对于 iOS 编程,当人们说 "is it built from a nib"时,是否真的意味着 "xib"?