我在尝试模仿时遇到了一些麻烦Ti.UI.iPhone.SystemButton.FLEXIBLE_SPACE
,想知道是否有任何建议(或我没有注意到的本机功能)。目前我有一个临时的解决方法来模拟一个工具栏,如果有一个项目,那么它将居中,如果有两个,那么第一个在左边,第二个在右边,如果超过三个,那么每个不是第一个或最后一个的项目都分配给视图中的特定插槽(插槽的宽度取决于项目的数量)。在下面的示例items
中是一个对象数组Ti.UI.Button
并且view
是一个Ti.Ui.View
对象。(systemButton
在 Android 上时)是一个字符串,对应于其等效的 iOS '常量'。
// Iterate over each item
for (var i in items)
{
// Continue if a flexible space
if ('FLEXIBLE_SPACE' === items[i].systemButton)
{
continue
}
// If there is more than one item
if (1 !== items.length)
{
// Get the key
var key = parseInt(i, 10)
// Set the position
switch (true)
{
// First
case (0 === key):
items[i].left = 0
break
// Last
case (items.length - 1 === key):
items[i].right = 0
break
// Otherwise if there are more than 3 items
case (3 < items.length):
// Get the slot width
var slot = 100 / items.length
// If a left position
if (key < items.length / 2)
{
items[i].left = (slot * key) + '%'
}
// Otherwise
else
{
items[i].right = (slot * (items.length - key - 1)) + '%'
}
// Break
break
}
}
// Add the item to the view
view.add(items[i])
}
这在某些情况下可以接受(不完美),但并非总是在使用灵活空间时,因为根据定义,它们不适合我分配的固定宽度插槽。
任何帮助将非常感激。
编辑:
我应该提到我正在寻找一个动态的解决方案;我知道我可以在每种情况下明确定义左右位置,但我宁愿(如果可能)能够将Ti.UI.Button
对象数组传递给函数并让它返回一个Ti.Ui.View
对象作为带有按钮的伪工具栏根据灵活空间的存在定位。