Основная графика Вращающийся путь
Это должно быть просто, в основном у меня есть несколько путей, нарисованных с помощью базовой графики, и я хочу иметь возможность вращать их (для удобства). Я пытался использовать CGContextRotateCTM(context); но это ничего не вращает. Я что-то пропустил?
Вот источник для drawRect
- (void)drawRect:(CGRect)rect {
CGContextRef context = UIGraphicsGetCurrentContext();
CGContextSetLineWidth(context, 1.5);
CGContextSetStrokeColorWithColor(context, [UIColor whiteColor].CGColor);
CGContextSetShadow(context, CGSizeMake(0, 1), 0);
CGContextBeginPath(context);
CGContextMoveToPoint(context, 13.5, 13.5);
CGContextAddLineToPoint(context, 30.5, 13.5);
CGContextAddLineToPoint(context, 30.5, 30.5);
CGContextAddLineToPoint(context, 13.5, 30.5);
CGContextAddLineToPoint(context, 13.5, 13.5);
CGContextClosePath(context);
CGContextMoveToPoint(context, 26.2, 13.5);
CGContextAddLineToPoint(context, 26.2, 17.8);
CGContextAddLineToPoint(context, 30.5, 17.8);
CGContextMoveToPoint(context, 17.8, 13.5);
CGContextAddLineToPoint(context, 17.8, 17.8);
CGContextAddLineToPoint(context, 13.5, 17.8);
CGContextMoveToPoint(context, 13.5, 26.2);
CGContextAddLineToPoint(context, 17.8, 26.2);
CGContextAddLineToPoint(context, 17.8, 30.5);
CGContextStrokePath(context);
CGContextSetFillColorWithColor(context, [UIColor whiteColor].CGColor);
CGContextSetShadowWithColor(context, CGSizeMake(0, 0), 0, [UIColor clearColor].CGColor);
CGContextFillRect(context, CGRectMake(26.2, 13.5, 4.3, 4.3));
CGContextFillRect(context, CGRectMake(13.5, 13.5, 4.3, 4.3));
CGContextFillRect(context, CGRectMake(13.5, 26.2, 4.3, 4.3));
CGContextRotateCTM(context, M_PI / 4);
}
1 ответ
Решение
Поместите это перед рисованием / заполнением фигуры, чтобы перевести ее в исходное положение, поверните, а затем переведите обратно в точку, в которой она должна вращаться:
static inline float radians(double degrees) { return degrees * M_PI / 180; }
CGContextTranslateCTM(c, midX, midY);
CGContextRotateCTM(c, radians(-73));
CGContextTranslateCTM(c, -midX, -midY);
Измените значение угла, переданное в CGContextRotateCTM, чтобы фигура указывала в другом направлении.