因此,对于分组的UITableView,我希望顶行中位于UITableViewCell的imageView中的图像看起来像这样(来自iTunes应用程序):
相反,我得到了这个:
该部分似乎不会屏蔽单元格的图像视图。为什么不?我已经尝试了所有我能想到的东西。据我所知,这是一个沼泽标准的设置。 UITableView是UITableViewController的一部分,没有自定义的UITableViewCell。
有没有其他人遇到这个?有没有自定义UITableViewCells的简单方法来实现这一点?我试过Matt Gallagher's code,但他没有掩盖顶部(和底部)行的图像。
答案 0 :(得分:4)
这类似于Adam Eberbach的回答,但略有不同(并且在iOS 5上为我工作):
#import <QuartzCore/QuartzCore.h>
...
- (void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath
{
cell.contentView.layer.masksToBounds = YES;
cell.contentView.layer.cornerRadius = 9.0f;
}
我刚刚将它添加到我的UITableView委托中,并且分组的单元格剪切了超出其边界的子视图。
答案 1 :(得分:3)
希望我不是很明显 - 但你尝试设置imageView.clipsToBounds
吗?
(不是那样的,我只是试过了。)
这是艰难的方式......
#import <QuartzCore/QuartzCore.h>
cell.imageView.layer.masksToBounds = YES;
cell.imageView.layer.cornerRadius = 9.0;
(至少我的模拟器上的9.0设置为“视网膜”。)
这会给你留下一个带有四个圆角的图像,这不是你想要的,而是中途。现在,如果您剪裁图像然后进行两阶段替换,首先用矩形(右上角和右下角)替换图像的右边缘,然后用左下角的小矩形替换你想要的。我知道挑剔,但我不认为有一个简单的答案。
我认为最合适的做法可能是将它合成为一个UIImage,你需要的角是透明的,然后在cellForRowAtIndexPath中只应用特殊的UIImage而不是正常的图像,如果它是一个组或组 - 最后一个细胞。
CGContextClipToMask看起来像要使用的那个。
答案 2 :(得分:0)