Сгруппированные UITableViews и Маскировка изображений - PullRequest
3 голосов
/ 21 января 2011

Таким образом, сгруппированный UITableView я ожидаю, что изображение, помещенное в imageView UITableViewCell в верхнем ряду, будет выглядеть следующим образом (из приложения iTunes):

YES PLEASE

Вместо этого я получаю это:

WAAAAAAH

Этот раздел не маскирует вид изображения ячейки.Почему бы и нет?Я перепробовал все, что мог придумать.Насколько я могу судить, это стандартная установка.UITableView является частью UITableViewController, а не пользовательского UITableViewCell.

Кто-нибудь еще сталкивался с этим?Есть ли простой способ добиться этого без пользовательских UITableViewCells?Я попробовал код Мэтта Галлахера , но он не маскирует изображение в верхнем (и нижнем) ряду.

Ответы [ 3 ]

4 голосов
/ 04 июня 2012

Это похоже на ответ Адама Эбербаха, но немного отличается (и работал для меня на 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, и сгруппированные ячейки обрезали подпредставления, которыепобежал за их пределы.

3 голосов
/ 21 января 2011

Надеюсь, я не очевиден - но вы пытались установить imageView.clipsToBounds?

(это не так, я только что попробовал.)

Вот трудный путь ...

#import <QuartzCore/QuartzCore.h>


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

(по крайней мере это 9.0 на моем симуляторе, установленном на "сетчатка".)

Это оставляет вас с изображением с четырьмя закругленными углами, которое не совсем то, что вы хотите, но на полпути,Теперь, если вы обрезали изображение, а затем выполнили двухэтапную замену, сначала заменив правый край изображения прямоугольником (верхний и нижний правый углы), а затем маленький прямоугольник для нижнего левого угла, у вас будет то, что вы хотите.Суетливый, я знаю, но не думаю, что есть простой ответ.

Я думаю, что наиболее правильным решением было бы объединить это в UIImage, где угол, который вам нужен, прозрачен, а затем в cellForRowAtIndexPath просто применитеспециальный UIImage, а не обычное изображение, если это ячейка первой или последней группы.

CGContextClipToMask выглядит как используемая.

0 голосов
/ 27 марта 2013

Существуют лучшие решения, которые округляют только верхний левый и / или нижний левый угол в следующих ответах на стек:1008 *https://stackoverflow.com/a/5567613/32749

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...