项目中有个需求要在UITableView加边框阴影
如果你的界面的UITableView是充满整个屏幕的话那么就可以使用这个简单的方法。
- 方法一
tableView.layer.shadowColor = UIColor(white: 000000, alpha: 0.3).CGColor
tableView.layer.shadowOffset = CGSize(width: -6, height: 6)
tableView.layer.shadowOpacity = 1
tableView.clipsToBounds = false //这句最重要了,不然就显示不出来
问题来了
我的界面UITableview上面有一个固定不动的区域,如果单纯的照上面写的话,就会出现tableview盖住上面的问题
其实就是因为clipsToBounds = false 不对超出边框的部分进行切割。
因为UIScrollview默认clipsToBounds = true,所以你可能之前没有见过超出部分依然还显示在界面。
我的界面如下图所示
如果父视图的clipsToBounds = true那么在上面的子控件的clipsToBounds 也是true
所以必须要在UITableview下面添加一个UIView,可以使用下面的代码
必须要使UITableView的clipsToBounds = true,下面的父视图的clipsToBounds = false
- 方法二
self.backView = [[UIView alloc]initWithFrame:CGRectMake(originX, originY, Width, height)];
self.backView.layer.shadowColor = [UIColor gh_colorFromHexString:@"#002F81"].CGColor;
self.backView.layer.shadowOffset = CGSizeMake(0, 2);
self.backView.layer.shadowOpacity = 0.1;
self.backView.layer.shadowRadius=8;//设置阴影半径
self.backView.clipsToBounds = false;
[self.view addSubview:self.backView];
self.tableView = [[UITableView alloc]initWithFrame:CGRectMake(0,0, Width, height) style:UITableViewStylePlain];
self.tableView.delegate = self;
self.tableView.dataSource = self;
self.tableView.layer.cornerRadius = KScreenWidth/375 *4;
self.tableView.layer.masksToBounds = YES;
self.tableView.tableFooterView = [UIView new];
[self.backView addSubview:self.tableView];