有关ios UITableViewCell自定义下划线在点击时先消失再出现的问题

    最近在开发公司app时发现一个问题,在公司自定义的UITableViewCell上的下划线,在点击Cell之后,下划线会先消失再出现.由于是菜鸟ioser,对这个问题很疑惑,一度找不到原因.由于公司的UITableViewCell是自定义的,而且写好的cell类都是在公共库中,并且已经使用了好几年,所以一度觉得不可能是公共库的问题,但是后来发现自己太高估公共库了,也不是代码写的问题,只是可能没有考虑到某些问题.我在UITableView 的代理中,点击某行的代理方法中设置了self.separatorStyle = UITableViewCellSeparatorStyleSingleLine之后,下划线在点击时就不闪了,但是这是使用了系统默认的下划线,与公司项目中需要的下划线有点区别,所以这种方式行不通.但是至少证明了系统的下划线不会出现闪一下的问题.所以问题还是回到了自定义UITableViewCell上面来.后来无意中想试一下通过画图方式画一个线条,看看有没有问题,在试了这种方式之后,发现通过画图方式画的下划线是没有问题的.这个问题的解决方法就是手动重新在UITableViewCell中画一条下划线,但是找不到原因,为什么项目中原先的实现方式是不行的.后来在仔细研究了公共库的源码之后发现,原先的那条线条其实是个UIView,实现方式是设置了坐标,大小,设置了颜色,然后就成为了一条线,但是实际上这条线就是个UIView.但是还是没搞明白为什么这个问题的根本原因.在想了好几天之后,我有了一个猜测,就是UITableViewCell其实也是一个UIView,下划线也是一个UIView,在点击了cell之后,UIView会响应用户的手势,有个高亮然后恢复正常的状态,下划线作为一个UIView,肯定也会响应手势,先高亮然后消失,这就会出现一闪而过的效果.后来为了验证猜想,我用原生的UITableViewCell写了同样的例子,发现还是会出现我们公司一样的问题.然后由于画一个线条是画在layer层上的,我又去查找layer与UIView的关系,我发现它们的关系比较复杂,但是有一点比较重要,视图添加到UIView层和Layer层有个很大的区别,UIView层会响应用户手势,但是Layer层是不会响应用户手势的.所以我觉得我的猜测应该没有问题.用UIView 来作为线条还是会出现很多问题的,尽量还是画线条比较好.


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值