Я недавно добавил в свое приложение несколько элементов Core Graphics, и оно резко замедлилось, сделав его практически бесполезным. Я не уверен, что я просто не использую Core Graphics эффективно (как мне сделать это быстрее?) Или эта проблема связана с использованием Core Graphics. Мой код ниже, после этого описания:
По экрану движутся пузыри речи (по осям x и y). У каждого пузыря есть соответствующее изображение внизу экрана, которое также перемещается по осям x и y. Я использую Core Graphics, чтобы нарисовать треугольник из пузырей речи, заканчивающийся нижними изображениями. На экране одновременно может быть более 10 таких треугольников, и все они движутся. Каждую 1/10 секунды срабатывает таймер, вычисляет положение всего и вызывает setNeedsDisplay
в построенном мною треугольном объекте.
Код для объекта треугольник:
- (void)drawRect:(CGRect)rect {
// Drawing code
// Drawing code
CGContextRef ctx = UIGraphicsGetCurrentContext(); //get the graphics context
CGContextSetRGBStrokeColor(ctx, 1.0, 0, 0, 1); //there are two relevant color states, "Stroke" -- used in Stroke drawing functions and "Fill" - used in fill drawing functions
//Create an array of points for triangle
CGPoint leftTrianglePoint;
CGPoint rightTrianglePoint;
rightTrianglePoint = CGPointMake(pointBlob.x, (pointBlob.y + 10.0));
leftTrianglePoint = CGPointMake(pointBlob.x, (pointBlob.y - 10.0));
CGPoint triangleArray [] =
{
pointGrid,
rightTrianglePoint,
leftTrianglePoint,
pointGrid,};
//Add lines to the context
CGContextAddLines( ctx, triangleArray, 4);
//draw the path
//color the context - using a function for gray, to matche the saved blobs
CGContextSetGrayFillColor(ctx, 0.0, .7);
//Now fill the path
CGContextFillPath(ctx);
}
Как я могу ускорить это / повысить эффективность, чтобы моя графика снова двигалась плавно?