Ftr #

Course #

Modules #

Ftr v0.7.0 Documentation


Table of Contents

ftr #

Class: GUIApplication #

快捷方式 --> GUIApplication

Class: ViewController #

快捷方式 --> ViewController

nextFrame(cb) #

渲染下一帧画面后执行,快捷方式 --> nextFrame(cb)

render(vx[,parentView]) #

通过vdom描述数据创建视图或视图控制器,快捷方式 --> render()

CSS(sheets) #

定义样式表,快捷方式 --> CSS()

Get: app #

获取当前GUIApplication实例

Get: root #

获取当前Root实例

Get: rootCtr #

获取当前根ViewController实例

Get: displayPort #

获取当前DisplayPort实例

Get: atomPixel #

屏幕原子像素尺寸,快捷方式 --> atomPixel

Class: View #

gui核心部件,用它来描述屏幕上所有可见的元素,它是所有视图的基础类型

它也是事件的响应者,这些事件由硬件以及操作系统触发

包括Touch Mouse Keyboard

View.onBack #

View.onClick #

View.onTouchStart #

View.onTouchMove #

View.onTouchEnd #

View.onTouchCancel #

View.onKeyDown #

View.onKeyPress #

View.onKeyUp #

View.onKeyEnter #

View.onFocus #

View.onBlur #

View.onHighlighted #

View.onRemoveView #

View.onActionKeyframe #

View.onActionLoop #

View.constructor() #

构造函数调用前必需先创建GUIApplication否则抛出异常

Example:

import { View, Div, ftr } from 'ftr'

var v = new View();
v.x = 100;
v.y = 100;
ftr.root.append(v);

// jsx语法只能存在于.jsx文件中
var v2 = ftr.render(<Div width=100 height=100 backgroundColor="#f00" />, v);
v2.onClick.on(function(ev) {
    console.log('div click');
})

View.firstButton() #

查询内部的第一个Button

hasChild(view) #

测试view视图是否为当前视图的后代视图

View.prepend(child) #

前置子视图

View.append(child) #

追加子视图

View.appendText(text) #

追击文本字符串到结尾,不同的视图追加到结尾的最终结果不同

如: View会追加成Label, Div会追加成Text, 而Hybrid则会追加成TextNode

但追加到结尾的都为叶子视图

View.appendTo(parent) #

追加到父视图结尾

  • @arg parent {View}

View.afterTo(prevView) #

追加上一个视图的后面

  • @arg prevView {View}

View.before(prev) #

插入到前面

View.after(next) #

插入到后面

View.remove() #

从父视图删除

View.removeAllChild() #

删除所有子视图

View.focus() #

获取焦点成功返回true

View.blur() #

辞去焦点成功返回true

View.layoutOffset() #

获取当前视图与父视图之间的偏移量,不包括xy

只有Layout才有此值其它非布局视图都为vec2(0,0)

View.layoutOffsetFrom([upper]) #

获取当前视图与upper视图之间的布局偏移量,不包括xy值,upper必需为父级视图

如果不传入upper默认为parent

  • @arg [upper=parent] {View}
  • @ret {Vec2}

View.getAction() #

获取当前视图动作

View.setAction(action) #

设置动作

Get: View.action #

获取动作,与getAction()功能相同

Set: View.action #

设置动作,可选的值为Action或可用于创建Actionjson描述Object

原型为: view.setAction(action.create(json))

View.transition(style[,delay[,cb]]) #

View.transition(style[,cb]) #

创建过度动画动作并立即开始播放并返回KeyframeAction

原型为: action.transition(view,style,delay,cb)

播放结束回调

Callback: cb()

View.show() #

显示视图,默认为设置view.visible = true 当然你可以重写该方法

View.hide() #

隐藏视图 默认为设置view.visible = false

View.screenRect() #

获取视图实际在屏幕中最小左上角与最大右下角所形成的矩形,注意Trap in Layout

View.finalMatrix() #

基础矩阵与父视图最终矩阵的乘积,注意Trap in Layout

View.finalOpacity() #

当前视图的不透明度与父视图的最终不透明度的乘积

View.position() #

获取视图最终在屏幕上的位置,注意Trap in Layout

实际上这个方法返回的是view.finalMatrix()最终矩阵中的translate位移分量

Trap in Layout #

  • 对于Layout视图而言,如果当前视图或相关视图有更改过与布局相关的属性,

    这时如果立即获取与屏幕位置相关的属性值或方法调用结果可能会不准确,

    因为布局视图始终都在渲染前才进行更新,这时应该使用到nextFrame(cb)这个函数,

    nextFrame(cb)总是在渲染完帧后执行

View.overlapTest(point) #

给定一个屏幕中上的座标点测试是否被视图包围

View.addClass(name) #

添加class样式选择器

View.removeClass(name) #

删除class样式选择器

View.toggleClass(name) #

切换class样式选择器

View.innerText #

获取与设置视图内部的文本

设置时不同的视图结果会有所不同,与appendText(text)类似

View.id #

获取或设置id,这个id在同一个视图控制器作作用域中不可以重复

可以通过owner.IDs.id获取这个视图

Get: View.owner #

指向视图控制器 owner

Get: View.parent #

返回父视图,Root没有父视图

Get: View.prev #

上一个兄弟视图

Get: View.next #

下一个兄弟视图

Get: View.first #

第一个子视图

Get: View.last #

最后一个子视图

View.x #

矩阵变换中的位移translate.x

View.y #

矩阵变换中的位移translate.y

View.scaleX #

矩阵变换缩放x

View.scaleY #

矩阵变换缩放y

View.rotateZ #

矩阵变换旋转z

View.skewX #

矩阵变换斜歪x

View.skewY #

矩阵变换斜歪y

View.opacity #

不透明度

View.visible #

显示与隐藏true为显示false隐藏,Layout不占用位置

Get: View.finalVisible #

最终是否显示或隐藏,受父视图影响

Get: View.drawVisible #

该状态标识视图是否在屏幕或区域范围内(是否需要绘图),这个状态会忽略visible

View.translate #

矩阵变换位移

View.scale #

矩阵变换缩放

View.skew #

矩阵变换斜歪

View.originX #

矩阵变换的原点x,默认为0

View.originY #

矩阵变换的原点x,默认为0

View.origin #

矩阵变换的原点,默认为vec2(0,0)

Get: View.matrix #

基础矩阵,通过计算从父视图矩阵开始的位移,缩放,旋转,歪斜得到的矩阵。注意Trap in Layout

Get: View.level #

gui视图树中的等级level, Root视图为1, 如果为0表示这个视图还没有父视图

View.needDraw #

强制必需渲染该视图

needDraw=false

如果这个值为false在渲染优化中会忽略没有在屏幕范围内的视图元素,

以及这个视图下的所有后代视图不管这些后代视图是否在屏幕范围内部,

当这个值为true时会强制绘制这个视图不管是否在屏幕范围内外。

View默认为true,那些可见的视图默认都为false如:Div/Sprite/Hybrid

View.receive #

是否响应接收事件,默认为false不接收,事件会穿透到最底层直到有视图接收并处理该事件,

但当有事件监听时会自动设置为true,当然你可以手动关闭它。

View.isFocus #

是否为焦点状态,焦点状态可以响应键盘事件,以及非触屏与非鼠标事件,当然你要确保receive为打开状态

Get: View.viewType #

返回视图类型的id不同的视图都有唯一的值

View.style #

实际上设置与返回都为自己,这个属性只为便捷性而存在

Get: View.class #

返回class样式表选择器对像

Set: View.class #

设置class样式表选择器

Example:

// Prints:
// {
//   name: "a b"
// }
view.class = 'a b'
console.log(view.class);

Class: Sprite #

图像精灵类型,非Layout视图, 任何变化都不会激活局部布局或连锁布局反应,

通过此它可以选取图像任意位置大小显示到屏幕,

在需要更高性能的地方可考虑使用它代替Image视图

Sprite.src #

图像路径,reader中支持的路径协议都可以

或者使用$(path)函数读取包内路径文件

Sprite.width #

Default0

  • 浮点类型的宽度,这里的单位并非为像素,这要参照DisplayPort设置的尺寸与屏幕的缩放

  • 这个值也表示选取图像的宽度,当然这个值会受ratio影响,ratio越小实际选取的图像范围越大

  • {float}

Sprite.height #

浮点类型的高度 Default0

Sprite.start #

  • 开始选取图像的开始位置,这个值为图像的实际像素值,但受ratio的影响

  • 如: 现在有一张实际像素为100*100像素的图像,start设置为vec2(25,25)

    如果ratio=vec2(0.5,0.5)那么实际选取的位置为图像的vec2(50,50)的位置与ratio成反比

    实际上现在可以将这张图像看做为50*50比实际缩小了0.5

Defaultvec2(0,0)

Sprite.startX #

选取图像有开始位置x Default0

Sprite.startY #

选取图像有开始位置y Default0

Sprite.ratio #

图像本身的缩放比例尺,这个值越小显示的图像范围越大,实际反应在屏幕上图像比例会变得更小

Defaultvec2(1,1)

Sprite.ratioX #

图像比例尺x

Sprite.ratioY #

图像比例尺y

Sprite.repeat #

图像是否重复,默认为不重复none, 可选的值参见Repeat

  • 运行在OpenGLES 2.0模式时这里设置为重复时,可能会出现图像不显示的情况,

    因为gles2.0建议使用非2^n尺寸图像,这有利于性能优化,现在还有很多低端Android设备运行gles2.0

    所以需要尽量注意在这些设备上使用非2^n尺寸图像

  • {Repeat}

Class: Label #

标签文本视图对像,具备简单的文本布局,任何变化都不会激活联锁布局计算,在要尔更高性能的地方可考虑使用

Get: Label.length #

获取标签视图文本内容长度

Label.value #

获取与设置广本值

Get: Label.textHoriBearing #

文本基线距离文本顶部的距离,不同字体与不同尺寸字号会不相同

Get: Label.textHeight #

文本顶部与底部的距离

Label.textAlign #

标签文本的对齐与排列方式 Default left

支持以下方式:

  • left - 从左到右排列并且以左边对齐

  • right - 从左到右排列并且以右边对齐

  • center - 从左到右排列并且以居中对齐

  • leftReverse - 从右到左排列并且以左边对齐

  • rightReverse - 从右到左排列并且以右边对齐

  • centerReverse - 从右到左排列并且以居中对齐

  • {TextAlign}

Class: Layout #

  • abstract class
  • extends View

  • 所有布局视图的基础类型,这是个抽象类型并没有构造函数,

  • 继承于它的视图属性的变化都会一定程度的引起布局计算,以及影响到与它相关的兄弟、父级、后代视图的布局计算,

    所以它相对于没有自动布局运算的视图性能要低,你可以合理使用这些类型来达到更好的性能,

  • 比如在设置尺寸时尽量使用明确的数值尽量少使用fullauto之类模糊值,模糊的值有时需要进行多次迭代布局运算才能得出结果,

    甚至你可以将布局视图与非布局视图相互嵌套使用来阻断连锁布局。

Get: Layout.clientWidth #

布局的clientWidth宽度,在Box中这个值包含finalMargin

Get: Layout.clientHeight #

布局的clientHeight高度,在Box中这个值包含finalMargin

Class: Span #

Class: TextNode #

  • extends Span

  • 文本布局的叶子视图,它不能再存在子视图

Get: TextNode.length #

文本字符串的长度

TextNode.value #

获取与设置文本字符串

Get: TextNode.textHoriBearing #

文本基线距离文本顶部的距离,不同字体与不同尺寸字号会不相同

Get: TextNode.textHeight #

文本顶部与底部的距离

Class: Box #

  • abstract class
  • extends Layout

盒子模型,布局的核心部件,这是个抽象类型并没有构造函数

Box.width #

盒子的宽度,应尽量使用明确值来降低布局运算 Defaultauto

盒子的尺寸在布局运算结果中分为明确值与模糊

可选的值:

  • auto - 自动模糊值受内部挤压影响,挤压也会影响到父视图与兄弟视图导致连锁反应会使它们的重新布局

  • full - 设置为这个类型的值时不管父视图是否有明确值都会填满父视图width

    当然这里是使用clientWidth填满,所以这里还需要marginborder参与运算。

    使用这个类型的值时,如果父视图没有明确宽度值,会导致最长最复杂的迭代运算。

  • pixel - 明确的像素数值并非真正就义上的像素,使用浮点数表示但在这里不能为负,

    1代表屏幕的多少像素需要参照DisplayPort中设置的尺寸与屏幕的缩放

  • percent - 百分比值使用10%形式表示,取父视图width的百分比值,需要父视图有明确width

    否则百分比值不会生效,为模糊值与auto无异

  • minus - 减小值用10!形式表示,使用父视图的最终width减去这个值得到的值,

    与百分比一样需要父视图有明确width值,否则减小值不会生效,为模糊值与auto无异

  • {Value}

Box.height #

盒子的高度,可选值参考height Defaultauto

Box.marginLeft #

左边的外边距 Default0

可选的值:

  • auto - 当父视图width与当前width都为明确值时才会生效,结果会等于父视图最终width减去当前width

    如果marginRight同时为auto这个值减半,相当于整个视图在父视图中居中

  • full - 与设置auto结果相同

  • pixel - 明确的数值,但不能为负数

  • percent - 使用父视图的百分比,父视图需要有明确宽度,否则无效

  • minus - 使用父视图的最终width减去这个值得到的值,父视图需要有明确宽度,否则无效

  • {Value}

Box.marginTop #

顶部的外边距 可选值参考marginLeft Default0

Box.marginRight #

右边的外边距 可选值参考marginLeft Default0

Box.marginBottom #

底部的外边距 可选值参考marginLeft Default0

Box.borderLeft #

左边框 Default0 #000000ff

Box.borderTop #

上边框 Default0 #000000ff

Box.borderRight #

右边框 Default0 #000000ff

Box.borderBottom #

下边框 Default0 #000000ff

Box.borderLeftWidth #

左边框宽度 Default0

Box.borderTopWidth #

上边框宽度 Default0

Box.borderRightWidth #

右边框宽度 Default0

Box.borderBottomWidth #

下边框宽度 Default0

Box.borderLeftColor #

左边框颜色 Default#000000ff

Box.borderTopColor #

上边框颜色 Default#000000ff

Box.borderRightColor #

右边框颜色 Default#000000ff

Box.borderBottomColor #

下边框颜色 Default0

Box.borderRadiusLeftTop #

左上圆角尺寸 Default0

Box.borderRadiusRightTop #

右上圆角尺寸 Default0

Box.borderRadiusRightBottom #

右下圆角尺寸 Default0

Box.borderRadiusLeftBottom #

左下圆角尺寸 Default0

Box.backgroundColor #

背景颜色 Default #0000 不透明度为0的黑色

Box.newline #

是否在新行开始布局 Default false

Box.clip #

是否修剪溢出的子视图内容 Default false

Get: Box.finalWidth #

获取最终宽度

Get: Box.finalHeight #

获取最高度

Get: Box.finalMarginLeft #

获取最终布局后的左外边距宽度

Get: Box.finalMarginTop #

获取最终布局后的上外边距宽度

Get: Box.finalMarginRight #

获取最终布局后的右外边距宽度

Get: Box.finalMarginBottom #

获取最终布局后的下外边距宽度

Set: Box.margin #

同时设置全部外边距

Set: Box.border #

同时设置全部边框

Set: Box.borderWidth #

同时设置全部的边框宽度值

Set: Box.borderColor #

同时设置全部的边框颜色值

Set: Box.borderRadius #

同时设置全部的边圆角值

Class: Div #

盒子模型的一种实现,定义内部Box的对齐与排列方式,

并且会忽略非Box内容的布局,不对其进行布局计算

Div.contentAlign #

内容的对齐与排列方式 Default left

  • left - 水平布局,从左到右排列布局,溢出往下换行

  • right - 水平布局,从右到左排列布局,溢出往下换行

  • top - 垂直布局,从上到下排列布局,溢出往右边换行

  • bottom - 垂直布局,从下到上排列布局,溢出往右换行

  • {ContentAlign}

Class: Hybrid #

盒子模型的一种实现,定义内部Layout的对齐与排列方式,

并且会忽略非Layout内容的布局,不对其进行布局计算

Hybrid.textAlign #

内容以及文本的对齐与排列方式 Default left

混合视图只能使用水平布局:

  • left - 内容从左到右排列并且以左边对齐

  • right - 内容从左到右排列并且以右边对齐

  • center - 内容从左到右排列并且以居中对齐

  • leftReverse - 内容从右到左排列并且以左边对齐

  • rightReverse - 内容从右到左排列并且以右边对齐

  • centerReverse - 内容从右到左排列并且以居中对齐

  • {TextAlign}

Class: Limit #

限制盒子,限制盒子的最小尺寸与最大尺寸

Limit.minWidth #

实际为width属性的别名,但在这里做为限制最小宽度使用

最小宽度不会超过maxWidth最大宽度的限制,如果超过取maxWidth

Default auto

Limit.minHeight #

实际为height属性的别名,但在这里做为限制最小高度使用

最小高度不会超过maxHeight最大高度的限制,如果超过取maxHeight

Default auto

Limit.maxWidth #

限制最大宽度 Default auto

Limit.maxHeight #

限制最大高度 Default auto

Class: Indep #

独立的盒子视图,它的偏移位置不受布局方式的影响,布局方式以自身的对齐方式为准

Indep.alignX #

水平对齐方式,默认为left,有效的值为:

  • left - 水平左对齐

  • cerent - 水平居中对齐

  • right - 水平右对齐

  • {Align}

Indep.alignY #

垂直对齐方式,默认为top,有效的值为:

  • top - 垂直顶部对齐

  • cerent - 垂直居中对齐

  • bottom - 垂直底部对齐

  • {Align}

Set: Indep.align #

同时设置垂直与水平对齐方式,默认为lefttop,有效的值为:

  • left - 水平左对齐

  • right - 水平右对齐

  • top - 垂直顶部对齐

  • bottom - 垂直底部对齐

  • cerent - 水平与垂直居中对齐

  • {Align}

Class: LimitIndep #

独立的限制盒子视图,顾名思义兼具独立盒子与限制盒子的特性

Indep.minWidth #

实为width别名,但这里做为限制最小宽度使用 --> Limit.minWidth

Indep.minHeight #

实为height别名,但这里做为限制最小高度使用 --> Limit.minHeight

Indep.maxWidth #

限制最大宽度 --> Limit.maxWidth

Indep.maxHeight #

限制最大高度 --> Limit.maxHeight

Class: Image #

  • extends Div

  • 图像视图的尺寸设置为auto时会使用源图像的像素尺寸并不会受内部挤压,这与Div不同

  • 如果width为明确数值height=auto时高度会按图像比例进行缩放,

    反过来height为明确数值时亦然相同,如果同时为auto使用源图像的尺寸

Image.src #

源图像路径,reader中支持的路径协议都可以

或者使用$(path)函数读取包内路径文件

Get: Image.sourceWidth #

源图像的像素宽度

Get: Image.sourceHeight #

源图像的像素高度

Class: Panel #

按钮面板视图,它对Button有特别的作用,专门针对tv设备遥控器操作而设计

需要与Button配合使用,否则与Div无异

以下所说的切换都为按下遥控器或键盘时

Panel.onFocusMove #

内部Button焦点切换时触发

Panel.allowLeave #

是否允许内部Button按钮将焦点切换到外部

Panel.allowEntry #

是否允许外部Button按钮将焦点切换到内部

Panel.intervalTime #

切换的时间限制,离上一次切换时间不到intervalTime不允许切换

Panel.enableSelect #

是否允许内部Button切换焦点

Get: Panel.isActivity #

是否激活状态,当内部Button拥有焦点时为激活状态

Get: Panel.parentPanel #

Panel视图

Class: Button #

按钮视图,这个视图默认绑定click后使用高亮样式

Button.defaultHighlighted #

是否使用高亮样式默认,Default true

Button.setHighlighted(status) #

设置高亮

Button.findNextButton(direction) #

查找指定方向相邻的按钮,按钮必需在Panel才能查找,找不到返回null

Get: Button.panel #

Class: Root #

  • extends Panel

  • 根视图,这个视图暂时只能是唯一的但未来可能会变化

Class: BasicScroll #

  • abstract class

滚动面板的基础类型,这是个抽象类型并没有构造函数

BasicScroll.scrollTo(scroll[,duration[,curve]]) #

滚动到指定位置,并可指定滚动动画的时间与曲线

  • @arg scroll {Vec2}
  • @arg [duration] {uint} ms, 过渡时间,不传入参数使用defaultScrollDuration
  • @arg [curve] {Curve} 过渡的曲线,不传入参数使用defaultScrollCurve

BasicScroll.terminate() #

中止当前过渡或惯性运动

BasicScroll.scroll #

滚动到指定位置

BasicScroll.scrollX #

滚动到指定x位置

BasicScroll.scrollY #

滚动到指定y位置

BasicScroll.scrollWidth #

可滚动内容宽度

BasicScroll.scrollHeight #

可滚动内容高度

BasicScroll.scrollbar #

是否显示滚动条

BasicScroll.resistance #

惯性滚动阻力,最小0.5

BasicScroll.bounce #

是否使用反弹 Default true

BasicScroll.bounceLock #

是否锁定反弹 Default true

当内容尺寸小于当前Scroll尺寸时是否可以拖拽并反弹,true表示不能被拖拽

BasicScroll.momentum #

拖拽是否引发惯性运动

BasicScroll.lockDirection #

是否锁定方向,只能往一个轴向滚动

BasicScroll.catchPositionX #

Default 1

  • 捕获位置x

  • scrollX最终总是会停止在捕获值的倍数位置,

  • 小于1表示捕获当前Scroll视图的finalWidth

  • {float}

BasicScroll.catchPositionY #

Default 1

  • 捕获位置y,小于1表示捕获当前Scroll视图的finalHeight

  • {float}

BasicScroll.scrollbarColor #

滚动条的颜色

Get: BasicScroll.hScrollbar #

当前是否显示hScrollbar

Get: BasicScroll.vScrollbar #

当前是否显示vScrollbar

BasicScroll.scrollbarWidth #

滚动条的宽度

BasicScroll.scrollbarMargin #

滚动条的边距

BasicScroll.defaultScrollDuration #

调用scrollTo 或设置scroll时的默认滚动过渡时间,Default 0

BasicScroll.defaultScrollCurve #

默认滚动曲线 Default easeOut

Class: Scroll #

滚动条的实现

Scroll.onScroll #

滚动时触发

Scroll.focusMarginLeft #

内部按钮切换时滚动的左边距

Scroll.focusMarginRight #

内部按钮切换时滚动的右边距

Scroll.focusMarginTop #

内部按钮切换时滚动的上边距

Scroll.focusMarginBottom #

内部按钮切换时滚动的下边距

Scroll.focusAlignX #

内部按钮切换时x轴滚动对齐方式

Scroll.focusAlignY #

内部按钮切换时y轴滚动对齐方式

Scroll.enableFocusAlign #

内部按钮切换时是否滚动可见位置 Default true

Scroll.enableFixedScrollSize #

设置并启用固定滚动大小,当设置值为vec2(0,0)时禁用固定滚动尺寸,使用实际内容的滚动尺寸

Class: Text #

文本叶子视图

Get: Text.length #

文本字符串长度

Text.value #

获取或设置文本字符串

Get: Text.textHoriBearing #

文本基线距离文本顶部的距离,不同字体与不同尺寸字号会不相同

Get: Text.textHeight #

文本顶部与底部的距离

Class: Input #

单行文本输入框

Text.type #

文本键盘类型:

  • normal -
  • ascii -
  • number -
  • url -
  • numberPad -
  • phonePad -
  • namePhonePad -
  • email -
  • decimalPad -
  • twitter -
  • webSearch -
  • asciiNumnerPad -

  • {KeyboardType}

Text.returnType #

文本框键盘返回类型:

  • normal -
  • go -
  • join -
  • next -
  • route -
  • search -
  • send -
  • done -
  • emergencyCall -
  • continue -

  • {KeyboardReturnType}

Text.placeholder #

当文本框值为空时,显示的占位字符串

Text.placeholderColor #

占位字符颜色

Text.security #

是否将文本显示为安全模式

Text.textMargin #

文本内容显示的左右边距

Class: Textarea #

多行文本输入框

Class: Clip #

裁剪视图,可以将溢出盒子外部的内容裁剪掉

Class: TextFont #

  • abstract class

普通文本与字体属性,这是个抽象类型并没有构造函数

TextFont.textBackgroundColor #

文本背景颜色 Default inherit

TextFont.textColor #

文本颜色 Default inherit

TextFont.textSize #

文本字号大小 Default inherit

TextFont.textStyle #

文本样式 Default inherit

  • inherit - 继承
  • light - 细体
  • regular - 正常
  • bold - 粗体
  • ...

  • {TextStyle}

TextFont.textFamily #

文本字体家族名称列表字符串,多个使用逗号分割 Default inherit

TextFont.textShadow #

文本阴影 Default inherit

TextFont.textLineHeight #

文本行高 Default inherit

可选的值为

  • inherit - 继承
  • auto - 使用字体文件中的默认值
  • xxx - 具体数值

  • {TextLineHeight}

TextFont.textDecoration #

文本装饰 Default inherit

  • inherit - 继承父视图
  • none - 无装饰
  • overline - 上划线
  • lineThrough - 中划线
  • underline - 下划线

  • {TextDecoration}

Class: TextLayout #

布局文本字体属性,这是个抽象类型并没有构造函数

TextFont.textOverflow #

文本溢出动作 Default inherit

  • inherit - 继承父视图
  • normal - 不做处理
  • clip - 修剪
  • ellipsis - 修剪并在文本末尾显示省略号
  • centerEllipsis - 修剪并在文本中间显示省略号

  • {TextOverflow}

TextFont.textWhiteSpace #

文本空格处理方式 Default inherit

  • inherit - 继承父视图
  • normal - 保留所有空白,使用自动wrap
  • noWrap - 合并空白序列,不使用自动wrap
  • noSpace - 合并空白序列,使用自动wrap
  • pre - 保留所有空白,不使用自动wrap
  • preLine - 合并空白符序列,但保留换行符,使用自动wrap

  • {TextWhiteSpace}