UITableViewCell backgroundView перекрывающийся contentView - PullRequest
1 голос
/ 19 декабря 2011

Я пытаюсь установить параметр backgroundView для UITableViewCell, но backgroundView перекрывает границы ячейки. Я попытался установить masksToBounds на YES, но это, похоже, не имеет значения. Пожалуйста, вы можете сказать мне, где я иду не так?

Вот изображение, показывающее мою проблему:

enter image description here

Вот мой код:

UIImageView *iv = [[[UIImageView alloc] initWithFrame:cell.frame] autorelease];
[iv setImage:[UIImage imageNamed:@"paper"]];
[iv.layer setMasksToBounds:YES];
[cell.layer setMasksToBounds:YES];
[cell.contentView.layer setMasksToBounds:YES];
[cell setBackgroundView:iv];

Ответы [ 2 ]

1 голос
/ 19 декабря 2011

Использование masksToBounds не работает, потому что границы ячейки - это прямоугольник.

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

Итак, если вы хотите предоставить пользовательский фоновый вид, вам нужно вычислить положение ячейки в ее сечении и предоставить соответствующий фон:

  • с использованием 4 разных изображений
  • или с помощью свойства mask слоя фонового изображения
  • или путем создания подкласса UIView и реализации drawRect: таким образом, графический контекст обрезается до рисования изображения.
0 голосов
/ 19 декабря 2011

Вы устанавливаете каждую ячейку в качестве фонового представления, если так, то почему бы просто не установить ее в качестве фона табличного представления.

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