gpt4 book ai didi

ios - 如何在 iOS 的 tableview 单元格中添加下拉阴影

转载 作者:行者123 更新时间:2023-11-29 02:38:56 25 4
gpt4 key购买 nike

如本 question 所示,可以使用这种类型的代码添加下拉阴影:

self.layer.shadowOffset = CGSizeMake(0, 1);
self.layer.shadowRadius = 1;
self.layer.shadowOpacity = 0.3;

但这不能是硬件加速的,所以渲染需要很长时间,当在 tableview 中使用时,需要重绘每个单元格,速度会很慢!

解决了这个问题,有没有人知道如何顺利​​地做到这一点?

最佳答案

我找到了解决我的问题的方法,它更像是一种变通方法,但对我来说工作正常,我创建了自定义类 ShadowVIew,它为任何 UIView 进行了正确的设置,并在其下方添加了一个深色透明 View 以查看像一个影子:

代码如下:

ShadowView.m

#import "ShadowView.h"

@interface ShadowView()

@property (nonatomic) UIView * shadow;

@end

@implementation ShadowView

-(id)initWithCoder:(NSCoder *)aDecoder{

if ((self = [super initWithCoder:aDecoder])) {
self.layer.masksToBounds = NO;
self.layer.cornerRadius = 8; // if you like rounded corners
}
return self;

}

-(void)layoutSubviews{
[super layoutSubviews];

if (self.shadow.superview == nil) {
UIView * parent = self.superview;
self.shadow = [[UIView alloc] initWithFrame:self.frame];
self.shadow.backgroundColor = [UIColor colorWithRed:0 green:0 blue:0 alpha:0.3];
CGRect frame = self.shadow.frame;
frame.origin.y+=1;
frame.origin.x-=1;
frame.size.width+=2;
self.shadow.frame = frame;
self.shadow.layer.masksToBounds = NO;
self.shadow.layer.cornerRadius = 8;

[parent insertSubview:self.shadow atIndex:0];
}


@end

请记住,这不是完美的解决方案,但可以快速实现。如果您的 View 不经常加载,您可以简单地添加 quartz 绘制的阴影,因此不会影响应用程序的性能。

self.layer.shadowOffset = CGSizeMake(0, 1);
self.layer.shadowRadius = 1;
self.layer.shadowOpacity = 0.3;

希望对大家有所帮助:)

关于ios - 如何在 iOS 的 tableview 单元格中添加下拉阴影,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26018257/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com