У меня есть черно-белое изображение в формате png, которое отображается с помощью UIImageView. Это форма часов без ручек. поэтому фон белый, а круг черный.
Затем я бы хотел часами и минутами рисовать поверх ручек, и я борюсь за то, как это сделать, хотя я недалеко, я не могу заставить его работать ...
Когда я рисую ручки, я получаю большой черный квадрат (поэтому я не могу видеть сквозь него, чтобы увидеть мой png за ним) и, по крайней мере, я вижу свои 2 ручки (синим цветом, которые я хотел). Я предполагаю, что цель состоит в том, чтобы сделать этот большой черный квадрат белым / прозрачным, чтобы он работал ...
Мой код такой, как показано ниже:
- (void)drawRect:(CGRect)rect
{
......
CGContextRef context = UIGraphicsGetCurrentContext();
CGContextClearRect(context, rect);
CGContextSetFillColorWithColor(context, [UIColor clearColor].CGColor);
CGContextSetRGBStrokeColor(context, 0.0, 0.0, 1.0, 1.0);
[self drawLineForContext:context Width:10.0 angle:hAlpha length:self.frame.size.width/2.0 - 40];
[self drawLineForContext:context Width:5.0 angle:mAlpha length:self.frame.size.width/2.0 - 12];
}
Как вы думаете, что мне не хватает?
Для информации, чтобы установить изображение, я просто делаю это так, я думаю, это правильно, как это работает ...
UIImage *image = [UIImage imageNamed: [md objectForKey:Q_DIRECTION_PIC]];
[ivDirectionPic setImage: image];
ivDirectionPic.backgroundColor=[UIColor clearColor];
ivDirectionPic.contentMode = UIViewContentModeScaleAspectFit;
Спасибо за вашу помощь!
Ура,
* 1015 ГБ *
EDIT1: я добавил UIColor clearColor, но он все тот же ... и я не понимаю ваш комментарий о том, как добавить другой подкласс с таким же фреймом: как, пожалуйста? где?
Я также добавил дополнительную функцию, которую вы попросили меня опубликовать:
- (void) drawLineForContext:(const CGContextRef)context Width:(float)_width angle:(double)_angle length:(double)radius
{
CGPoint c = CGPointMake(self.frame.size.width/2.0, self.frame.size.height/2.0);
CGContextSetLineWidth(context, _width);
CGContextMoveToPoint(context, self.center.x, self.center.y);
CGPoint addLines[] =
{
CGPointMake(self.frame.size.width/2.0, self.frame.size.height/2.0),
CGPointMake(radius*cos(_angle) +c.x, radius*sin(_angle) +c.y),
};
CGContextAddLines(context, addLines, sizeof(addLines)/sizeof(addLines[0]));
CGContextStrokePath(context);
}