分组UITableViews和图像掩蔽

时间:2011-01-21 00:20:41

标签: iphone ios uitableview

因此,对于分组的UITableView,我希望顶行中位于UITableViewCell的imageView中的图像看起来像这样(来自iTunes应用程序):

YES PLEASE

相反,我得到了这个:

WAAAAAAH

该部分似乎不会屏蔽单元格的图像视图。为什么不?我已经尝试了所有我能想到的东西。据我所知,这是一个沼泽标准的设置。 UITableView是UITableViewController的一部分,没有自定义的UITableViewCell。

有没有其他人遇到这个?有没有自定义UITableViewCells的简单方法来实现这一点?我试过Matt Gallagher's code,但他没有掩盖顶部(和底部)行的图像。

3 个答案:

答案 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)

有更好的解决方案,只围绕以下stackoverflow答案的左上角和/或左下角:

https://stackoverflow.com/a/10515546/32749

https://stackoverflow.com/a/5567613/32749