iOS - 阴影无法正确调整大小

时间:2014-10-31 18:29:15

标签: ios calayer shadow

我有一个具有动态单元格大小的tableView,并且在重复使用单元格时无法调整阴影大小。此解决方案适用于iOS8,但不适用于iOS7。阴影创建时,阴影也会根据像素大小正确显示,但在重复使用细胞后它们会中断。

@implementation

    static const CGFloat shadowWithInset = 2;
    static const CGFloat shadowHeightOutset = 4;

- (void)awakeFromNib {
    CALayer *layer = self.innerView.layer;

    layer.shadowOffset = CGSizeMake(1, 1);
    layer.shadowRadius = 3.0f;
    layer.shadowColor = [[UIColor gray] CGColor];
    layer.shadowOpacity = 0.8f;
    //layer.shouldRasterize = YES;
    //layer.rasterizationScale = [UIScreen mainScreen].scale;

    CGSize size = layer.bounds.size;
    layer.shadowPath = [UIBezierPath bezierPathWithRect:CGRectMake(shadowWithInset, size.height-shadowHeightOutset, size.width-(shadowWithInset*2), shadowHeightOutset)].CGPath;
}

- (void)layoutSubViews {
   [super layoutSubviews];

    CGSize size = self.innerView.bounds.size;
    layer.shadowPath = [UIBezierPath bezierPathWithRect:CGRectMake(shadowWithInset, size.height-shadowHeightOutset, size.width-(shadowWithInset*2), shadowHeightOutset)].CGPath;
}

@end

1 个答案:

答案 0 :(得分:0)

填充cellForRowAtIndexPath中的所有文本字段后,我最终这样做了:

[self setNeedsLayout];
[self layoutIfNeeded];