@@ -2,6 +2,10 @@ import imageCommon = require("./image-common");
22import dependencyObservable = require( "ui/core/dependency-observable" ) ;
33import proxy = require( "ui/core/proxy" ) ;
44import enums = require( "ui/enums" ) ;
5+ import color = require( "color" ) ;
6+ import utilsModule = require( "utils/utils" ) ;
7+ import style = require( "ui/styling/style" ) ;
8+ import view = require( "ui/core/view" ) ;
59import * as trace from "trace" ;
610import * as utils from "utils/utils" ;
711
@@ -39,6 +43,7 @@ function onImageSourcePropertyChanged(data: dependencyObservable.PropertyChangeD
3943export class Image extends imageCommon . Image {
4044 private _ios : UIImageView ;
4145 private _imageSourceAffectsLayout : boolean = true ;
46+ private _templateImageWasCreated : boolean = false ;
4247
4348 constructor ( ) {
4449 super ( ) ;
@@ -54,7 +59,21 @@ export class Image extends imageCommon.Image {
5459 return this . _ios ;
5560 }
5661
62+ public _setTintColor ( value : any ) {
63+ if ( value !== null && this . _ios . image && ! this . _templateImageWasCreated ) {
64+ this . _ios . image = this . _ios . image . imageWithRenderingMode ( UIImageRenderingMode . UIImageRenderingModeAlwaysTemplate ) ;
65+ this . _templateImageWasCreated = true ;
66+ }
67+ this . _ios . tintColor = value ;
68+ }
69+
5770 public _setNativeImage ( nativeImage : any ) {
71+ if ( this . style . color && nativeImage ) {
72+ nativeImage = nativeImage . imageWithRenderingMode ( UIImageRenderingMode . UIImageRenderingModeAlwaysTemplate ) ;
73+ this . _templateImageWasCreated = true ;
74+ } else {
75+ this . _templateImageWasCreated = false ;
76+ }
5877 this . ios . image = nativeImage ;
5978
6079 if ( this . _imageSourceAffectsLayout ) {
@@ -135,3 +154,24 @@ export class Image extends imageCommon.Image {
135154 return { width : scaleW , height : scaleH } ;
136155 }
137156}
157+
158+ export class ImageStyler implements style . Styler {
159+ //Text color methods
160+ private static setColorProperty ( view : view . View , newValue : any ) {
161+ var image = < Image > view ;
162+ image . _setTintColor ( newValue ) ;
163+ }
164+
165+ private static resetColorProperty ( view : view . View , nativeValue : any ) {
166+ var image = < Image > view . ios ;
167+ image . _setTintColor ( null ) ;
168+ }
169+
170+ public static registerHandlers ( ) {
171+ style . registerHandler ( style . colorProperty , new style . StylePropertyChangedHandler (
172+ ImageStyler . setColorProperty ,
173+ ImageStyler . resetColorProperty ) , "Image" ) ;
174+ }
175+ }
176+
177+ ImageStyler . registerHandlers ( ) ;
0 commit comments