Skip to content

Commit 4cf57b3

Browse files
author
Tsvetan Raikov
committed
Added tintColor property in {N} ImageView
1 parent aed87e6 commit 4cf57b3

File tree

3 files changed

+60
-4
lines changed

3 files changed

+60
-4
lines changed

tns-core-modules/package.json

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
{
22
"name": "tns-core-modules",
33
"description": "Telerik NativeScript Core Modules",
4-
"version": "2.2.1",
4+
"version": "2.3.0",
55
"homepage":"https://www.nativescript.org",
66
"repository": {
77
"type": "git",
@@ -24,12 +24,12 @@
2424
"license": "Apache-2.0",
2525
"typings": "tns-core-modules.d.ts",
2626
"dependencies": {
27-
"tns-core-modules-widgets": "2.2.0"
27+
"tns-core-modules-widgets": "next"
2828
},
2929
"nativescript": {
3030
"platforms": {
31-
"ios": "2.2.0",
32-
"android": "2.2.0"
31+
"ios": "2.1.1",
32+
"android": "2.1.1"
3333
}
3434
}
3535
}

tns-core-modules/ui/image/image.android.ts

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ import style = require("ui/styling/style");
66
import view = require("ui/core/view");
77
import background = require("ui/styling/background");
88
import utils = require("utils/utils");
9+
import color = require("color");
910

1011
global.moduleMerge(imageCommon, exports);
1112

@@ -108,6 +109,17 @@ export class ImageStyler implements style.Styler {
108109
background.ad.onBackgroundOrBorderPropertyChanged(v);
109110
}
110111

112+
// tint color
113+
private static setColorProperty(view: view.View, newValue: any) {
114+
var imageView = <org.nativescript.widgets.ImageView>view._nativeView;
115+
imageView.setColorFilter(newValue);
116+
}
117+
118+
private static resetColorProperty(view: view.View, nativeValue: number) {
119+
var imageView = <org.nativescript.widgets.ImageView>view._nativeView;
120+
imageView.clearColorFilter();
121+
}
122+
111123
public static registerHandlers() {
112124
// Use the same handler for all background/border properties
113125
// Note: There is no default value getter - the default value is handled in background.ad.onBackgroundOrBorderPropertyChanged
@@ -119,6 +131,10 @@ export class ImageStyler implements style.Styler {
119131
style.registerHandler(style.borderWidthProperty, new style.StylePropertyChangedHandler(
120132
ImageStyler.setBorderWidthProperty,
121133
ImageStyler.resetBorderWidthProperty), "Image");
134+
135+
style.registerHandler(style.colorProperty, new style.StylePropertyChangedHandler(
136+
ImageStyler.setColorProperty,
137+
ImageStyler.resetColorProperty), "Image");
122138
}
123139
}
124140

tns-core-modules/ui/image/image.ios.ts

Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,10 @@ import imageCommon = require("./image-common");
22
import dependencyObservable = require("ui/core/dependency-observable");
33
import proxy = require("ui/core/proxy");
44
import 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");
59
import * as trace from "trace";
610
import * as utils from "utils/utils";
711

@@ -39,6 +43,7 @@ function onImageSourcePropertyChanged(data: dependencyObservable.PropertyChangeD
3943
export 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

Comments
 (0)