2012-01-22 2 views
2

Я подклассифицирую UITableViewCell и в методе drawRect:. Я хочу нарисовать растяжимое изображение, но я испытал, что это сильно влияет на производительность прокрутки.Растяжимое изображение в drawRect вызывает медленную прокрутку

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

EDIT: Если я должен разделить изображение и растянуть его сам, ему должно быть девять изображений, а не четыре. Один для каждого угла, один для верхнего среднего, нижнего среднего, левого среднего, правого среднего и один для центра.

ответ

2

Попробуйте использовать [UIImage resizableImageWithCapInsets:] для создания изменяемого размера изображения вместо собственного кода. Создайте UIImageView с изображением и просто добавьте его как subview в cell.contentView с индексом 0

+0

Это дало мне значительно лучшую производительность! Хотя, добавив его как подзаголовок, это не отличная идея. Вместо этого используйте 'drawInRect:' или 'drawAtPoint:' вместо UIImage. – simonbs

+1

Я заметил, что resizableImageWithCapInsets: выбирает разные методы в зависимости от ширины зазора между вставками. Если это пробел в 1pt, тогда он использует UIImageResizingModeStretch, который имеет лучшую производительность прокрутки. Если разрыв больше, он использует UIImageResizingModeTile, который отсасывает прокрутку, но отлично подходит для изменения размера UIImageView (наоборот, для Stretch). В iOS6 вы можете выбрать эти режимы вручную с помощью resizableImageWithCapInsets: resizingMode :. – orj

+0

@orj, большое спасибо. Мне посчастливилось найти эту информацию здесь и устранить проблему, которая заставила меня застрять уже пару недель. Ты спас мой день! – John

Смежные вопросы