2011-01-21 49 views
3

所以有分組的UITableView我希望擺在UITableViewCell中的ImageView的第一行中的圖像看起來像這樣(從iTunes應用程序):分組UITableViews和圖片遮罩

YES PLEASE

相反,我得到這樣的:

WAAAAAAH

的部分沒有出現,以掩蓋該單元的圖像視圖。爲什麼不?我試過了我能想到的一切。據我所知,這是一個沼氣標準的建立。 UITableView是UITableViewController的一部分,沒有自定義的UITableViewCell。

有沒有其他人遇到過這個問題?有沒有簡單的方法來實現這個沒有自定義UITableViewCells?我試過Matt Gallagher's code,但他沒有掩蓋頂部(和底部)行中的圖像。

回答

3

希望我不是很明顯 - 但你試過設置imageView.clipsToBounds

(這並不是說,我剛剛試了一下。)

這裏是艱辛的道路......

#import <QuartzCore/QuartzCore.h> 


cell.imageView.layer.masksToBounds = YES; 
cell.imageView.layer.cornerRadius = 9.0; 

(至少是9.0我的模擬器設置爲 「視網膜」。)

這給你留下一張帶有四個圓角的圖像,它不完全是你想要的,而是一半的。現在,如果您剪切了圖像,然後進行了兩階段替換,首先用矩形(右上角和右下角)替換圖像的右側邊緣,然後用左下角的小矩形替換您想要的圖像。模糊我知道,但我不認爲有一個簡單的答案。

我認爲最正確的做法可能是將其組合成一個UIImage,其中你需要的角是透明的,然後在cellForRowAtIndexPath中只應用特殊的UIImage而不是普通的圖像,如果它是一個組或組細胞。

CGContextClipToMask看起來像使用的那個。

+0

`UIView.clipsToBounds `是長方形的。我確實嘗試了`imageView.layer.masksToBounds`,它可以承認任何角落的漫畫,但是沒有運氣。 – 2011-01-21 00:45:32

4

這類似於亞當埃伯巴赫的答案,但略有不同的(爲我工作在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委託和被編組單元中裁剪跑子視圖在他們的界限之外。