Как быстрее нарисовать 6 замаскированных изображений, чтобы при просмотре таблицы не замедлялся
Дело в том, что у меня есть этот пользовательский вид (3 из них) в моей одной ячейке, и он делает много отсечения и рендеринга изображений... Мне действительно нужно, чтобы сделать это быстрее.
В моем drawRect:
[super drawRect:rect];
CGContextRef contextRef = UIGraphicsGetCurrentContext();
CGFloat spacer = 1.5;
if(_type == DPClippedImageViewTypeTopLeft){
CGContextMoveToPoint(contextRef, rect.origin.x, rect.origin.y); //top left
CGContextAddLineToPoint(contextRef, rect.origin.x, rect.origin.y); //top left
CGContextAddLineToPoint(contextRef, rect.origin.x + (rect.size.width) - spacer, rect.origin.y); //top right
CGContextAddLineToPoint(contextRef, rect.origin.x, rect.origin.y + (rect.size.height) - spacer); //bottom left
CGContextAddLineToPoint(contextRef, rect.origin.x, rect.origin.y); //top left
}
else if(_type == DPClippedImageViewTypeBottomRight){
CGContextMoveToPoint(contextRef, rect.origin.x + (rect.size.width), rect.origin.y + spacer); //top right
CGContextAddLineToPoint(contextRef, rect.origin.x + (rect.size.width), rect.origin.y + spacer); //top right
CGContextAddLineToPoint(contextRef, rect.origin.x + (rect.size.width), rect.origin.y + (rect.size.height)); //bottom right
CGContextAddLineToPoint(contextRef, rect.origin.x + spacer, rect.origin.y + (rect.size.height)); //bottom left
CGContextAddLineToPoint(contextRef, rect.origin.x + (rect.size.width), rect.origin.y + spacer); //top right
}
else{
CGContextMoveToPoint(contextRef, rect.origin.x, rect.origin.y);
CGContextAddLineToPoint(contextRef, rect.origin.x, rect.origin.y);
CGContextAddLineToPoint(contextRef, rect.origin.x, rect.origin.y + (rect.size.height));
CGContextAddLineToPoint(contextRef, rect.origin.x + (rect.size.width), rect.origin.y + (rect.size.height));
CGContextAddLineToPoint(contextRef, rect.origin.x + (rect.size.width), rect.origin.y);
CGContextAddLineToPoint(contextRef, rect.origin.x, rect.origin.y);
}
// clip context to current path
CGContextClip(contextRef);
CGContextSaveGState(contextRef);
if(_type == DPClippedImageViewTypeTopLeft){
CGContextTranslateCTM(contextRef, -rect.size.width*2.0/3.0, -rect.size.height*3.0/5.0);
}
else if (_type == DPClippedImageViewTypeBottomRight){
CGContextTranslateCTM(contextRef, -rect.size.width*1.0/3.0, -rect.size.height*2.0/5.0);
}
CGFloat scale = (_type != DPClippedImageViewTypeNone) ? 2.0 : 1.0;
CGContextScaleCTM(contextRef, scale, scale);
// draw image
[_image drawInRect:rect];
CGContextRestoreGState(contextRef);
Теперь у меня есть 3 из этих вещей на ячейку, и даже с переработкой, все еще нужно определить, какую часть изображения нарисовать и нарисовать...
Я действительно не могу придумать способ ускорить это:(Любая помощь очень ценится!
Результат - 2 изображения. Один - это прямоугольный треугольник с прямым углом вверху слева, другой - прямоугольный треугольник с прямым углом внизу справа.