mirror of
https://github.com/NativeScript/NativeScript.git
synced 2025-11-05 13:26:48 +08:00
text-transform added
This commit is contained in:
@@ -16,7 +16,7 @@ interface TextUIView {
|
||||
font: UIFont;
|
||||
textAlignment: number;
|
||||
textColor: UIColor;
|
||||
text : string;
|
||||
text: string;
|
||||
attributedText: NSAttributedString;
|
||||
lineBreakMode: number;
|
||||
numberOfLines: number;
|
||||
@@ -266,6 +266,15 @@ export class ButtonStyler implements definition.stylers.Styler {
|
||||
setTextDecoration((<UIButton>view.ios).titleLabel, enums.TextDecoration.none);
|
||||
}
|
||||
|
||||
// text-transform
|
||||
private static setTextTransformProperty(view: view.View, newValue: any) {
|
||||
setTextTransform(view.ios, newValue);
|
||||
}
|
||||
|
||||
private static resetTextTransformProperty(view: view.View, nativeValue: any) {
|
||||
setTextTransform(view.ios, enums.TextTransform.none);
|
||||
}
|
||||
|
||||
// white-space
|
||||
private static setWhiteSpaceProperty(view: view.View, newValue: any) {
|
||||
setWhiteSpace((<UIButton>view.ios).titleLabel, newValue, view.ios);
|
||||
@@ -299,6 +308,10 @@ export class ButtonStyler implements definition.stylers.Styler {
|
||||
ButtonStyler.setTextDecorationProperty,
|
||||
ButtonStyler.resetTextDecorationProperty), "Button");
|
||||
|
||||
style.registerHandler(style.textTransformProperty, new stylersCommon.StylePropertyChangedHandler(
|
||||
ButtonStyler.setTextTransformProperty,
|
||||
ButtonStyler.resetTextTransformProperty), "Button");
|
||||
|
||||
style.registerHandler(style.whiteSpaceProperty, new stylersCommon.StylePropertyChangedHandler(
|
||||
ButtonStyler.setWhiteSpaceProperty,
|
||||
ButtonStyler.resetWhiteSpaceProperty), "Button");
|
||||
@@ -346,6 +359,15 @@ export class TextBaseStyler implements definition.stylers.Styler {
|
||||
setTextDecoration(view._nativeView, enums.TextDecoration.none);
|
||||
}
|
||||
|
||||
// text-transform
|
||||
private static setTextTransformProperty(view: view.View, newValue: any) {
|
||||
setTextTransform(view._nativeView, newValue);
|
||||
}
|
||||
|
||||
private static resetTextTransformProperty(view: view.View, nativeValue: any) {
|
||||
setTextTransform(view._nativeView, enums.TextTransform.none);
|
||||
}
|
||||
|
||||
// white-space
|
||||
private static setWhiteSpaceProperty(view: view.View, newValue: any) {
|
||||
setWhiteSpace(view._nativeView, newValue);
|
||||
@@ -391,6 +413,10 @@ export class TextBaseStyler implements definition.stylers.Styler {
|
||||
TextBaseStyler.setTextDecorationProperty,
|
||||
TextBaseStyler.resetTextDecorationProperty), "TextBase");
|
||||
|
||||
style.registerHandler(style.textTransformProperty, new stylersCommon.StylePropertyChangedHandler(
|
||||
TextBaseStyler.setTextTransformProperty,
|
||||
TextBaseStyler.resetTextTransformProperty), "TextBase");
|
||||
|
||||
style.registerHandler(style.whiteSpaceProperty, new stylersCommon.StylePropertyChangedHandler(
|
||||
TextBaseStyler.setWhiteSpaceProperty,
|
||||
TextBaseStyler.resetWhiteSpaceProperty), "TextBase");
|
||||
@@ -957,6 +983,91 @@ function setTextDecoration(view: TextUIView, value: string) {
|
||||
}
|
||||
}
|
||||
|
||||
function setTextTransform(view: TextUIView, value: string) {
|
||||
let str = getNSStringFromView(view);
|
||||
let result: string;
|
||||
|
||||
switch (value) {
|
||||
case enums.TextTransform.none:
|
||||
default:
|
||||
result = view["originalString"] || str;
|
||||
break;
|
||||
case enums.TextTransform.uppercase:
|
||||
result = str.uppercaseString;
|
||||
break;
|
||||
case enums.TextTransform.lowercase:
|
||||
result = str.lowercaseString;
|
||||
break;
|
||||
case enums.TextTransform.capitalize:
|
||||
result = str.capitalizedString;
|
||||
break;
|
||||
}
|
||||
|
||||
if (!view["originalString"]) {
|
||||
view["originalString"] = str;
|
||||
}
|
||||
|
||||
let newStr = getAttributedStringFromView(view, result);
|
||||
|
||||
if (newStr) {
|
||||
setAttributedStringToView(view, newStr);
|
||||
} else {
|
||||
setStringToView(view, result);
|
||||
}
|
||||
}
|
||||
|
||||
function getNSStringFromView(view: any): NSString {
|
||||
let result: string;
|
||||
|
||||
if (view instanceof UIButton) {
|
||||
let attrTitle = (<UIButton>view).titleLabel.attributedText;
|
||||
result = attrTitle ? attrTitle.string : (<UIButton>view).titleLabel.text;
|
||||
}
|
||||
else {
|
||||
let attrText = (<UITextView>view).attributedText;
|
||||
result = attrText ? attrText.string : (<UITextView>view).text;
|
||||
}
|
||||
|
||||
return NSString.alloc().initWithString(result || "");
|
||||
}
|
||||
|
||||
function setStringToView(view: any, str: string) {
|
||||
if (view instanceof UIButton) {
|
||||
(<UIButton>view).setTitleForState(str, UIControlState.UIControlStateNormal);
|
||||
}
|
||||
else {
|
||||
(<TextUIView>view).text = str;
|
||||
}
|
||||
}
|
||||
|
||||
function getAttributedStringFromView(view: any, value: string): NSMutableAttributedString {
|
||||
let result: NSMutableAttributedString;
|
||||
|
||||
if (view instanceof UIButton) {
|
||||
let attrTitle = (<UIButton>view).titleLabel.attributedText;
|
||||
if (attrTitle) {
|
||||
result = NSMutableAttributedString.alloc().initWithAttributedString(attrTitle);
|
||||
}
|
||||
} else if (view.attributedText) {
|
||||
result = NSMutableAttributedString.alloc().initWithAttributedString(view.attributedText);
|
||||
}
|
||||
|
||||
if (result) {
|
||||
result.replaceCharactersInRangeWithString({ location: 0, length: result.length }, value);
|
||||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
function setAttributedStringToView(view: any, str: NSMutableAttributedString) {
|
||||
if (view instanceof UIButton) {
|
||||
(<UIButton>view).setAttributedTitleForState(str, UIControlState.UIControlStateNormal);
|
||||
}
|
||||
else {
|
||||
(<TextUIView>view).attributedText = str;
|
||||
}
|
||||
}
|
||||
|
||||
function setWhiteSpace(view: TextUIView, value: string, parentView?: UIView) {
|
||||
if (value === enums.WhiteSpace.normal) {
|
||||
view.lineBreakMode = NSLineBreakMode.NSLineBreakByWordWrapping;
|
||||
|
||||
Reference in New Issue
Block a user