i need fill mkoverlay specific color , kcgblendmodemultiply blending mode. i've implemented mkoverlayrenderer subclass follows:
@interface mapdimoverlayrenderer : mkoverlayrenderer @property (nonatomic, strong) uicolor *overlaycolor; @property (nonatomic, strong) cgfloat overlayalpha; @end @implementation mapdimoverlayrenderer - (instancetype)initwithoverlay:(id<mkoverlay>)overlay { self = [super initwithoverlay:overlay]; if (self) { self.overlayalpha = 0.9; self.overlaycolor = [uicolor hx_colorwithhexstring:@"2c3239" alpha:self.overlayalpha]; } return self; } - (void)drawmaprect:(mkmaprect)maprect zoomscale:(mkzoomscale)zoomscale incontext:(cgcontextref)context { cgcontextsetblendmode(context, kcgblendmodemultiply); cgcontextsetfillcolorwithcolor(context, self.overlaycolor.cgcolor); cgcontextfillrect(context, [self rectformaprect:mkmaprectworld]); } @end
the problem cgcontextsetblendmode doesn't affect result. tried set different modes. result same default (kcgblendmodenormal).
Comments
Post a Comment