Я переопределил UIView, чтобы сделать несколько пользовательских рисований:
// ========================================================================================
- (void) drawRect:(CGRect)rect {
float alphaStep = (kMaxAlpha - kMinAlpha) / (self.nbLines - 1);
float alphaValue = kMaxAlpha;
float lineToDrawY = self.headLineYPos;
float lineWidth = kScanLineMaxWidth;
float lineWidthStep = (kScanLineMaxWidth - kScanLineMinWidth) / (self.nbLines - 1);
CGContextRef context = UIGraphicsGetCurrentContext();
for (int i=1; i<=self.nbLines; i++) {
CGContextBeginPath(context);
CGContextSetLineWidth(context, lineWidth);
CGContextSetStrokeColorWithColor(context, [self.scanColor colorWithAlphaComponent:alphaValue].CGColor);
CGContextMoveToPoint(context, 0, lineToDrawY);
CGContextAddLineToPoint(context, [self bounds].size.width, lineToDrawY);
CGContextStrokePath(context);
lineToDrawY -= kOneLineJumpDistance;
lineWidth = MAX(0.5, lineWidth - lineWidthStep);
alphaValue = MAX(0, alphaValue - alphaStep);
}
}
self.nbLines может быть около 30-40, может быть 100.
Но эта часть чертежаочень много времени, и я не могу обновлять экран каждые 2 или 3 мс.Это необходимо, чтобы общее время анимации экрана было меньше секунды (я перемещаю линию заголовка каждые xxx мс на xxx пикселей, но слишком большое увеличение приводит к мерцанию).
Как я могу оптимизировать это?