以钛的百分比定义fontSize

时间:2016-11-28 13:10:19

标签: android ios label titanium appcelerator

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

我有这个:

<script src="https://cdnjs.cloudflare.com/ajax/libs/d3/3.4.11/d3.min.js"></script>

但我需要这样的事情:

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%",
    }));

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

我如何在标签中提及?

我在经典模式下工作

这是我不会实现的目标:

enter image description here

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

1 个答案:

答案 0 :(得分:2)

因为调整后的问题而进行编辑:

要动态调整字体大小,您需要使用“黑客”。因为你不能使用百分比作为标签。

要遵循的步骤:

  1. 围绕要动态调整大小的所有元素创建一个包装器视图,这可以包括除标签之外的其他元素
  2. 通过执行wrapperView.toImage()
  3. 将整个视图转换为图像(在渲染后)
  4. 创建一个imageview并将其准确放置在您拥有的包装器视图之上。
  5. 隐藏包装视图。
  6. 调整图像视图大小,同时调整大小。
  7. 只要你再次需要标签(例如动画完成后),请将包装器放回原处并再次移除图像。
  8. 用户将不知道有图像,因为它无论如何都是动画,用户习惯于在动画期间无法点击。一旦动画完成,内容将再次被替换。完美的实现,为您提供了很大的灵活性。

    ---以下原始答案供将来参考----

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

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

    对于iOS,您可以根据分辨率检查设备是iPad还是iPhone,或者检查是否存在Ti.UI.iPad。然后,您可以指定基于iPad或iPhone的字体大小。

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