Полагаю, я недостаточно знаю о манипуляциях с Quartz или CAShapeLayer, но я хотел знать, как изменить цвет заливки на пользовательский UIView, который у меня есть.
Вот реализация для DotView
:
#define kCustomBlue [UIColor colorWithRed:181.0/255 green:228.0/255 blue:226.0/255 alpha:1]
@implementation DotView
- (id)initWithFrame:(CGRect)frame
{
if ((self = [super initWithFrame:frame])) {
self.backgroundColor = [UIColor clearColor];
self.opaque = YES;
}
return self;
}
- (id)initWithCoder:(NSCoder *)coder
{
if ((self = [super initWithCoder:coder])) {
self.backgroundColor = [UIColor clearColor];
self.opaque = YES;
}
return self;
}
- (void)drawRect:(CGRect)rect {
[super drawRect:rect];
CAShapeLayer *circleLayer = [CAShapeLayer layer];
[circleLayer setPath:[[UIBezierPath bezierPathWithOvalInRect:rect] CGPath]];
circleLayer.fillColor = kCustomBlue.CGColor;
[self.layer addSublayer:circleLayer];
}
@end
После размещения объекта DotView
((nonatomic, weak)
IBOutlet в моем интерфейсе ViewController
) в моей раскадровке я запускаю код, и все в порядке и отлично. Этот объект в моем ViewController
интерфейсе называется dot1
Я хочу иметь свойство @property (nonatomic, strong) UIColor* fillingColor;
, которое устанавливает цвет заливки для вида. Как мне правильно это реализовать?
Идея такова: к представлению dot1
прикреплен объект распознавателя жестов касания, и каждый раз, когда я нажимаю на точку, цвет меняется с синего на черный (затем с черного на синий).
Я использую XCode 9.3 и у меня iPhone 7 под управлением iOS 11.2
Спасибо, Энтони