【问题标题】:Correct way to adapt the UI to various iPhone screen sizes使 UI 适应各种 iPhone 屏幕尺寸的正确方法
【发布时间】:2017-10-20 09:58:55
【问题描述】:

在钛经典中,我这样做是为了使 UI 适应各种 iPhone 屏幕尺寸。

return parseInt((Ti.Platform.displayCaps.platformWidth * val) / 320);

从对象在宽度为 320 磅的设备中的基本尺寸开始调整对象的尺寸。

测试代码

var win = Ti.UI.createWindow();

var testView1 = Ti.UI.createView({
    width : Ti.UI.FILL,
    height : Ti.UI.SIZE,
    top : 0,
    backgroundColor : "#2196F3",
    layout : "vertical"
});

var testView2 = Ti.UI.createView({
    width : Ti.UI.FILL,
    height : Ti.UI.SIZE,
    bottom: getSize(20),
    layout : "horizontal"
});

testView2.add(

    Ti.UI.createView({
        width : getSize(50),
        height : getSize(50),
        left : getSize(20),
        borderRadius : getSize(25),
        backgroundColor : "white"
    }),
    Ti.UI.createLabel({
        width : getSize(200),
        height : Ti.UI.SIZE,
        left : getSize(20),
        text : "Lorem ipsum dolor sit amet, consectetur adipisci elit, sed eiusmod tempor incidunt ut labore et dolore magna aliqua.",
        color : "white",
        font : {
            fontSize : getSize(14)
        }
    })

);

testView1.add(

    Ti.UI.createLabel({
        width : Ti.UI.FILL,
        height : getSize(50),
        top : getSize(20),
        text : "Lorem ipsum",
        color : "white",
        font : {
            fontSize : getSize(14),
            fontWeight : "bold"
        },
        textAlign : "center",
    }),

    testView2

);

win.add(testView1);
win.open();

function getSize(val){
    return parseInt((Ti.Platform.displayCaps.platformWidth * val) / 320);
}

没有 getSize() 函数的结果

getSize() 函数的结果

这是一个好方法吗?

【问题讨论】:

    标签: titanium appcelerator appcelerator-titanium


    【解决方案1】:

    有一件事我不确定您是使用 "dp" 作为尺寸系统的标准单位还是 "pixels(px)",但从您的第一个屏幕截图来看,您似乎没有使用 "dp" 尺寸系统,因为 "dp" 系统在不经过此 size() 的情况下为您提供相同的结果方法

    不过,在考虑创建 UI 选择之前,这里需要考虑的事项很少。

    第 1 点:

    如果您的应用 UI 没有太多内容可在可见屏幕上显示,则选择显示足够大的元素而不进入滚动模式。


    第 2 点:

    如果您的应用的 UI 有大量内容要显示,如列表视图、表格视图或滚动视图中的其他视图,那么您应该更喜欢创建稍小的元素以滚动方式显示更多内容。


    最佳解决方案:

    坚持 Titanium 本身所做的,默认选择 "dp" 系统,这与您使用 size() 方法所做的完全相同。

    这里是了解更多关于“dp”系统的链接Titanium DIP Unit System

    【讨论】:

    • 您好,感谢您的回答。默认单位是 dp,在本例中我不更改属性 <property name="ti.ui.defaultunit" type="string">dp</property>
    • 这只是一个例子。这是为了了解一般使用什么方法。如果我不使用 getSize 函数,UI 在 iPhone 6-7-8 和 iPhone 6-7-8plus 等设备上会太小
    • 通常 dp 在大多数设备上都能很好地工作,有时需要创建更大的 UI 元素。为此,我建议对此类设备和所需元素使用比例因子,而不是为所有 UI 元素设置大小。只需确保您使用更强大的缩放方法,以便在需要重新缩放或使用默认大小时,只需最少的代码更改即可完成。为此,您可以尝试在alloy.js 中为高密度设备设置一些全局变量以进行缩放。
    猜你喜欢
    • 2018-10-14
    • 2022-01-24
    • 1970-01-01
    • 1970-01-01
    • 2013-02-05
    • 1970-01-01
    • 2016-07-02
    • 2016-07-02
    • 2015-02-03
    相关资源
    最近更新 更多