UITableViewCell рендеринг с drawRect: выглядит размытым на дисплее Retina iPad - PullRequest
1 голос
/ 22 марта 2012

Я использую drawRect: в моем подклассе UITableViewCell для производительности рендеринга при прокрутке; все в ячейке (текст и графика) отображается в drawRect:. На сетчатке нового iPad эта ячейка выглядит очень размытой.

Для сравнения приведен скриншот с ячейками (вверху) и другим изображением одинакового размера внизу. Разница между качеством нижнего изображения и клеток очевидна.

Screenshot taken on iPad with retina display

Это на физическом устройстве, а не на симуляторе. Я убедился, что используемые мной экземпляры UIImage имеют шкалу 2; изображения аватара пользователя загружаются из Интернета, поэтому проблема не в суффиксе @2x. Образ «Awesome» - это тот же актив, загруженный из основного комплекта. Кроме того, сам текст размыт.

Я пробовал разные варианты сглаживания безрезультатно. Я также попытался установить contentScaleFactor моего вида и contentScale слоя моего вида на [[UIScreen mainScreen] scale], но это тоже не помогает.

Есть предложения?

Edit:

Вот фрагмент метода drawRect:, отвечающего за визуализацию аватара пользователя. _avatar является переменной экземпляра, а addRoundedRectToPath() просто обрезает угловой радиус в 5 точек от пути контекста.

{
    CGContextSaveGState(context);

    addRoundedRectToPath(context, avatarFrame, 5, 5);
    CGContextClip(context);

    [_avatar drawInRect:avatarFrame];

    CGContextRestoreGState(context);
}

Текст комментария отображается аналогично:

[[UIColor whiteColor] set];
[_body drawInRect:textRect withFont:kPXCompositePhotoCommentCellBodyFont];

Я развертываю на iOS 5.0 с базовым SDK 5.1, используя Xcode 4.3.2.

1 Ответ

4 голосов
/ 22 марта 2012

Вы установили слой представления, чтобы хотеть растеризацию? Это опциональная вещь, и иногда она используется как трюк для ускорения работы ячеек. Но неправильное использование может привести к появлению некрасивых слоев.

...