ВСЕ ПИСЬМЕННО ЗДЕСЬ НАСТОЯЩЕЕ РАБОТАЕТ ПРАВИЛЬНО
ИСКЛЮЧИТЬ ДЛЯ [UIImage imageNamed:]
ИСПОЛЬЗОВАНИЕ МЕТОДА
Реализация
Я использую модель в ведьмеу вас есть пользовательский UITableViewCell
с одним пользовательским UIView
, настроенным как ячейки backgroundView
.
Пользовательский UIView
содержит два изображения размером с ячейку ( 320x80 px ), одно из которых на 100% прозрачно для половины вида.Все элементы имеют значение Непрозрачный и имеют свойство 1.0 Альфа .
Я не использую ячейки повторно, потому что мне не удалось заставить их загружать разные изображения.Ячейка повторно используется по одному до 9 ячеек в целом.Итак, у меня в памяти 9 многократно используемых ячеек.
Ячейка initWithStyle:reuseIdentifier
часть метода:
CGRect viewFrame = CGRectMake(0.0f, 0.0f, 320.0f, 80.0f);
customCellView = [[CustomCellView alloc] initWithFrame:viewFrame];
customCellView.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight;
[self setBackgroundView:customCellView];
Метод инициализации CustomCellView:
- (id)initWithFrame:(CGRect)frame {
if ((self = [super initWithFrame:frame])) {
self.opaque = YES;
self.backgroundColor = [UIColor UICustomColor];
}
return self;
}
Изображения находятся в процессепредварительно загруженный в NSMutableArray как объекты UIImage из файлов PNG с помощью метода imageNamed:
UIImage.
Они устанавливаются в методе UITableViewDelegate tableView:cellForRowAtIndexPath:
и передаются через UITableViewCell с пользовательским методом в UIView.
И затем рисуется в переопределенном методе UIView drawRect:
:
- (void)drawRect:(CGRect)rect {
CGRect contentRect = self.bounds;
if (!self.editing) {
CGFloat boundsX = contentRect.origin.x;
CGFloat boundsY = contentRect.origin.y;
CGPoint point;
point = CGPointMake(boundsX, boundsY);
if (firstImage) { [firstImage drawInRect:contentRect blendMode:kCGBlendModeNormal alpha:1.0f]; }
if (secondImage) { [secondImage drawInRect:contentRect blendMode:kCGBlendModeNormal alpha:1.0f]; }
}
}
Как вы видите изображения рисуются с помощью метода drawInRect:blendMode:alpha:
.
Задача
ХорошоUITableView вообще нельзя прокручивать, его бьют по каждой ячейке, он громоздкий и жуткий.
Мысли
Хорошо копая пример кода, переполнение стека и форумы, я подумал об использовании OpenGL ESдля предварительного рендеринга изображений, но разве сложно сделать плавную прокрутку?