11

我找不到我的问题的解决方案,所以我希望一些专家可以帮助我。

我有很多单元格的表格视图。对于每个单元格,我都有一个带圆角的图像视图:

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
UIImageView *exampleView;

...
exampleView.layer.cornerRadius =   5.f;
exampleView.clipsToBounds = YES;   
[cell.contentView addSubview:exampleView];
...

}

导致严重缺乏滚动性能问题 - 当使用cornerRadius 和 clipsToBounds = YES 时,还有其他解决方案吗? (圆角图像视图包含图片,如果没有设置角。滚动是平滑的。所以问题就在这里)

编辑#1:澄清我已经阅读了其他帖子:

...
exampleView.frame = CGRectMake(5.0f,size.height-15.0f,30.0f,30.0f);
exampleView.layer.backgroundColor = [UIColor colorWithRed:0 green:0 blue:0 alpha:0.5].CGColor;
exampleView.layer.cornerRadius = 5.0f;
exampleView.layer.borderWidth       =   0.3f;
exampleView.layer.borderColor       =   [UIColor blackColor].CGColor;
exampleView.layer.masksToBounds = NO;
exampleView.layer.shouldRasterize = YES;
//exampleView.clipsToBounds = NO;
[exampleView setImage: myImage ];

编辑#2: 就像 myImage 在圆角视图上重叠。如何使图像正确适合圆角视图?还是我错过了什么?

4

1 回答 1

10

只需更改以下行

  exampleView.layer.masksToBounds = YES;

在你的 imageView 中圆角。请参阅下面的图片。

表格视图滚动是视图合成的问题。除了上面的建议,这肯定会有帮助 - 设置 UITableViewCell 的 contentView 属性和 backgroundView 属性的 opaque 属性。去:

  [cell.contentView setOpaque:YES];
  [cell.backgroundView setOpaque:YES];

这将有助于在尽可能早的阶段减少视图合成工作。

还有一些额外的高级技术需要您在滚动时使用异步处理来处理图像。如果上述技术有效,它们可能会矫枉过正。

图层的 maskToBounds 设置为 yes 的 UIImageView 图层的 maskToBounds 设置为 No 的 UIImageView

于 2012-09-02T16:13:13.510 回答