Мы можем установить CGColor в качестве заливки или цвета обводки для данного контекста, делая что-то вроде:Core Graphics - есть ли способ получить/получить текущий CGColor из CGContext?
UIColor *color = [UIColor whiteColor];
CGContextRef ctx = UIGraphicsGetCurrentContext();
CGContextSetFillColorWithColor(ctx, color.CGColor);
Но как мы можем получить или получить в настоящее время набора заполнения или цвета мазка из данного контекста?
Так есть ли API что-то вроде:
CGColorRef CGContextGetFillColorFromContext(CGContextRef c)
который принимает CGContext в качестве входного параметра и возвращает его в настоящее время установить Fill или инсульт CGColour? Если нет, то есть ли какой-то другой косвенный способ достичь этого?
Я надеюсь на выше, потому что цвет установлен в одном классе, и это необходимо еще в каком-то другом классе, как так:
В MyView.m
- (void)drawRect:(CGRect)rect {
[[UIColor whiteColor] set]
//[@“Hello” drawInRect:rect withFont:titleFont lineBreakMode:UILineBreakModeCharacterWrap alignment:UITextAlignmentLeft]; //draws text in the rect with white font colour but removed becasue of API deprecation
[@“Hello” my_drawInRect:rect withFont:titleFont lineBreakMode:NSLineBreakByCharWrapping alignment:NSTextAlignmentLeft];
}
В NSString + моя_категории. м
-(void)my_drawInRect:(CGRect)rect withFont:(UIFont *)font lineBreakMode:(NSLineBreakMode)lineBreakMode alignment:(NSTextAlignment)alignment {
NSMutableParagraphStyle* paragraphStyle = [NSMutableParagraphStyle new];
paragraphStyle.lineBreakMode = lineBreakMode;
paragraphStyle.alignment = alignment;
UIColor* color = nil; //Hoping to get it from UIGraphicsGetCurrentContext();
[self drawInRect:rect withAttributes:@{NSFontAttributeName:font, NSParagraphStyleAttributeName:paragraphStyle, NSForegroundColorAttributeName:color}];
}
Спасибо за ваш ответ. Запись его в переменную является одним из очевидных решений, которые я планировал использовать, если нет способа получить его непосредственно из CGContext. Я обновил свой вопрос, чтобы уделить больше внимания тому, почему я надеялся на такой API. – archeopetrix
Но, как вы подтвердили, нет прямого способа получить его из текущего CGContext, поэтому я могу либо: (i) изменить вышеуказанный метод в категории NSString, чтобы принять еще один параметр (для используемого цвета) или (ii) хранить/записывать цвет в свойстве некоторого синглтона и получать доступ к нему оттуда в методе категории. Пожалуйста, исправьте меня, если я ошибаюсь Еще раз спасибо за вашу помощь. Многие ваши ответы здесь на SO были действительно полезны в прошлом. – archeopetrix