设置子视图的layer.cornerRadius后iOS UITableView滚动不顺畅[重复]

Posted

技术标签:

【中文标题】设置子视图的layer.cornerRadius后iOS UITableView滚动不顺畅[重复]【英文标题】:iOS UITableView scroll not smoothly after set the layer.cornerRadius of subviews [duplicate] 【发布时间】:2015-09-25 16:47:11 【问题描述】:

我正在使用UITableView 制作日历视图(见下图),每个UITableViewCell 代表一个月有几个子视图,每个子视图意味着有一天我们称它为DayView,每个DayView 包含一个子视图 UILabel 显示月份中的哪一天。到现在为止,一切似乎都很好,UITableView 的滚动流畅。但是在我在DayView- (instancetype)initWithFrame:(CGRect)frame 中添加这一行之后:

self.layer.cornerRadius = 5.0;

UITableView 的帧率在滚动时变得非常低。它根本赶不上我的手指。那么最可能的原因是什么?

顺便问一下,这种问题应该怎么解决?

谢谢。

编辑:

cellForRowAtIndexPath 方法:

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath 
    static NSString *monthCellIdentifier = @"MonthCell";
    OPCalendarPageView *cell = [tableView dequeueReusableCellWithIdentifier:monthCellIdentifier];
    cell.manager = _manager;
    cell.date = [self dateForIndexPath:indexPath];
    return cell;

我正在使用库JTCalendar,OPCalendarPageViewJTCalendarPageView 的自定义版本,只是在月份的第一天上方添加了一个月份标签。

【问题讨论】:

为什么每天视图都需要圆角? 请添加-cellForRowAtIndexpath的代码: @rmaddy 我只是想让日视图的形状不是矩形,然后发现了这个问题。 好的,但是您显示的图像是白底白字,没有边框。圆角的日子看起来有什么不同? 好吧,我想在日视图中添加更多元素,例如不同的背景颜色、事件标记等,这样它们看起来会随着圆角而不同。 【参考方案1】:

首先,请多提一点,比如你的子视图的场景,或者你设置的其他属性,比如border-width、masktobound或cliptobound等,而不是设置角半径。

其次, 我不确定,但我已经解决了我的问题,设置如下行

self.layer.masksToBounds = YES;

或者如果此解决方案不起作用,请尝试以下链接,其中fknrdcls 以适当的方式给出了非常好的答案,以保护角半径对 uitableview 的负面影响。 基本上 uitableview 是 uiscrollview 的子类,所以下面的解决方案可能会解决您的问题。

UILabel layer cornerRadius negatively impacting performance

【讨论】:

这真的成功了,太棒了!

以上是关于设置子视图的layer.cornerRadius后iOS UITableView滚动不顺畅[重复]的主要内容,如果未能解决你的问题,请参考以下文章

UI-视图-方法打印-基础控件

ios:按钮的子视图未显示

UIlabel layer.cornerRadius在iOS 7.1中不起作用

较小尺寸的按钮不是带有 layer.cornerRadius 的圆形

UIButton的layer.cornerRadius删除了按钮标题的可见性

iOS 设置控件的边框圆角