如何将属性应用于存在但不立即可见的钛元素?

Posted

技术标签:

【中文标题】如何将属性应用于存在但不立即可见的钛元素?【英文标题】:How do you apply properties to Titanium elements that exist but are not immediately visible? 【发布时间】:2015-11-22 00:46:28 【问题描述】:

在 Titanium Studio 中,我正在开发一个 android 应用。我有一个 TableView,它的行超出了页面的高度。表格的一列有一个标签,我想将其旋转 270 度,以便其中的文本是垂直的。

我正在像这样旋转文本:

tr = Ti.UI.create2DMatrix();
tr = tr.rotate(270);

var label = Titanium.UI.createLabel(
    ...
    ...
    transform: tr
);

但是,这种转换似乎只适用于可见的标签。当我向下滚动表格时,表格中先前超出页面高度的标签仍然是水平的。当我滚动回表格顶部时, 最初成功旋转的标签又恢复为水平状态。

我尝试使用 scroll、scrollend、dragstart 和 dragend 事件在滚动到标签后重新转换标签,但这种方法并不能始终有效。当它起作用时,它是丑陋的,因为当滚动到标签时,最初是水平的,用户可以在几秒钟后看到它们被转换的动画。

如何避免这种情况并让所有标签从一开始就垂直旋转?有没有更好的旋转标签方法?

其他想法:我发现最奇怪的是标签/文本已经创建,否则当我向下滚动表格时它们不会出现。它们的颜色和尺寸都合适。如果正确应用了颜色和大小属性,那么为什么不能转换呢?我什至尝试过改变

transform: tr

transform: Ti.UI.create2DMatrix(rotate:270)

我想是一样的

transform: Ti.UI.create2DMatrix().rotate(270)

这也不起作用。

【问题讨论】:

【参考方案1】:

你可以试试animecyc模块: https://github.com/animecyc/TitaniumAnimator

【讨论】:

感谢您的回复。与将标签的旋转/变换属性应用于屏幕外元素一样,我在旋转方面没有任何问题。所以我认为答案是弄清楚这一点。不过,我不知道该怎么做。此外,animecyc 不支持 android 的 transform 属性。 它支持旋转,所以我认为它可能以不同的方式处理旋转并且可能适用于您的情况。

以上是关于如何将属性应用于存在但不立即可见的钛元素?的主要内容,如果未能解决你的问题,请参考以下文章

如何在Angular 2中使用ngStyle将transform translate属性应用于元素

延迟加载不可见元素

检查元素在 DOM 中是不是可见

Redis学习笔记集合进阶

将 Vue.js id 应用于正文时,标题中的徽标不可见

如何将样式应用于 SVG 元素数组