Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/iphone/40.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ember.js/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Iphone 分组UITableView和图像遮罩_Iphone_Ios_Uitableview - Fatal编程技术网

Iphone 分组UITableView和图像遮罩

Iphone 分组UITableView和图像遮罩,iphone,ios,uitableview,Iphone,Ios,Uitableview,因此,对于分组的UITableView,我希望放置在UITableViewCell最上面一行的imageView中的图像是这样的(来自iTunes应用程序): 相反,我得到的是: 该部分似乎不会遮罩单元格的图像视图。为什么不呢?我已经尝试了我能想到的一切。据我所知,这是一个沼泽标准设置。UITableView是UITableViewController的一部分,没有自定义UITableViewCell 还有其他人碰到过这个吗?没有自定义UITableViewCells,有没有一种简单的方法可

因此,对于分组的UITableView,我希望放置在UITableViewCell最上面一行的imageView中的图像是这样的(来自iTunes应用程序):

相反,我得到的是:

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


还有其他人碰到过这个吗?没有自定义UITableViewCells,有没有一种简单的方法可以实现这一点?我试过了,但他没有遮住顶部(和底部)行中的图像。

希望我不是很明显-但是你试过设置
imageView.clipstobunds

(不是这样,我只是试过了。)

这是一条艰难的道路

#import <QuartzCore/QuartzCore.h>


cell.imageView.layer.masksToBounds = YES;
cell.imageView.layer.cornerRadius = 9.0;
#导入
cell.imageView.layer.masksToBounds=是;
cell.imageView.layer.cornerRadius=9.0;
(至少我的模拟器设置为“视网膜”时是9.0。)

这就给你留下了一个有四个圆角的图像,这并不是你想要的,但已经是一半了。现在,如果剪切图像,然后进行两阶段替换,首先用矩形(右上角和右下角)替换图像的右边缘,然后用小矩形替换左下角,您将得到所需的内容。我知道,但我不认为有一个简单的答案

我认为最正确的做法可能是将其合成为一个UIImage,其中所需的角点是透明的,然后在cellForRowAtIndexPath中,如果它是组第一个或组最后一个单元格,则只应用特殊的UIImage而不是普通的image


CGContextClipToMask看起来就是要使用的。这与Adam Eberbach的答案相似,但略有不同(在iOS 5上为我工作):

#导入
...
-(void)tableView:(UITableView*)tableView将显示单元格:(UITableViewCell*)用于rowatindexpath的单元格:(NSIndexPath*)indexPath
{
cell.contentView.layer.masksToBounds=是;
cell.contentView.layer.cornerRadius=9.0f;
}

我刚刚将其添加到我的UITableView委托中,分组的单元格剪裁了超出其边界的子视图。

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


ui视图。剪贴簿是矩形的。我确实尝试了
imageView.layer.masksToBounds
,它尊重任何角落半径,但没有运气。有趣的解决方案,谢谢,亚当。经过这么多的努力,我可能只想用我想要的屏蔽行为将UIImageView子类化,并在UITableViewCell上设置imageView属性。还是很惊讶它不能开箱即用。
#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;
}