在钛中以百分比定义 fontSize

define fontSize in percentage in titanium

我需要以百分比设置标签的字体大小,这样当我在我的应用程序中调整当前布局大小时,文本调整大小等于屏幕的其余部分。

我有这个:

vara label = Ti.UI.createLabel({
        text : ("Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut").toString(),
        color : "white",
        font : {
            fontSize : deviceWidth * 0.03,
            fontFamily : "OpenSans-Light"
        },
        left : "0%",
    }));

但我需要这样的东西:

var label Ti.UI.createLabel({
        text : ("Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut").toString(),
        color : "white",
        font : {
            fontSize : "20%,
            fontFamily : "OpenSans-Light"
        },
        left : "0%",
    }));

问题是 fontSize : "20% 不起作用。

我怎样才能在标签中注明?

我在经典模式下工作

这是我不会实现的:

当我的屏幕调整大小时,文本应调整为。

因调整问题而编辑:

要即时动态调整字体大小,您需要使用 "hack"。因为您不能使用百分比作为标签。

要遵循的步骤:

  1. 围绕要动态调整大小的所有元素创建一个包装视图,这也可以包括标签以外的其他元素
  2. 通过执行 wrapperView.toImage()
  3. 将整个视图转换为图像(在渲染后)
  4. 创建一个图像视图并将其准确定位在您拥有的包装视图之上。
  5. 隐藏包装视图。
  6. 根据需要调整图像视图的大小。
  7. 一旦您再次真正需要标签(例如在动画完成后),请将包装纸放回去并再次移除图像。

用户将不知道有一张图片,因为无论如何它都是动画的,而且用户习惯于在动画期间无法点击。一旦动画完成,内容就会再次被替换。一个完美的实现,给你很大的灵活性。

---下面的原答案供日后参考----

百分比是不可能的,但是有一个解决方案可能会对您有所帮助。

在 Android 上,您可以使用字体大小 sp。这意味着字体是依赖于比例的,基本上就是你要找的。

对于 iOS,您可以根据分辨率检查设备是 iPad 还是 iPhone,或者检查 Ti.UI.iPad 是否存在。然后您可以根据 iPad 或 iPhone.

指定字体大小

此外,在 iOS 上,您可以使用标签的 minimumFontSize 属性,然后在固定视图中指定更大的字体大小(例如百分比宽度)。通过这样做,字体能够根据它所在的容器缩小。在 documentation.

中阅读更多相关信息