Недавно я добавил некоторые элементы 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);
}
Как я могу повысить эффективность и эффективность сборки, чтобы моя графика снова двигалась плавно?