1

我在主视图上方有3个(加载器,锁定器和调试视图)隐藏视图(touchEnabled和visible设置为false,zIndex设置为1) (zIndex = 2)。更改可见属性有时会改变视图的中心位置(可能的bug?)

每个 '过度' 视图有以下方法:

$.debugView.show = function() { 

    $.debugView.touchEnabled = $.debugView.visible = true; 

    $.debugView.zIndex = 3; 
}; 

$.debugView.hide = function() { 

    $.debugView.touchEnabled = $.debugView.visible = false; 

    $.debugView.zIndex = 1; 
}; 

此屏幕有3 '在' 视图中隐藏:

enter image description here

现在,我打开“调试视图',但是,有时候它似乎改变了位置(就好像它的中心位于左上角而不是设备的中心)。

enter image description here

而不是要求的结果:

enter image description here

如果我使用的透明度,而不是Visible属性,它工作正常。

这可能是一个SDK错误吧?

<Alloy> 
    <Window> 
     <View id="content"/> 
     <View id="locker"/> 
     <View id="loader"/> 
     <View id="debugView"/> 
    </Window> 
</Alloy> 

所有这些4次没有宽度或高度(所以它使用Ti.UI.FILL默认)

回答

2

我有一个完全不同的实现也注意到了这一点。我只有一种观点,我把它包含在一个窗口中。

显然,如果元素被隐藏,左边和顶部计算没有正确完成。

我做了什么来解决这个问题是通过计算使用左边的位置进行硬编码左/顶部位置是:

$.content.left = (Ti.Platform.displayCaps.platformWidth - 75)/2; 

凡在我的情况是75元素拥有宽度,这样会你的情况要大一些。你可以做同样的高度。

现在,这是一个仅限iOS的解决方案。在Android上,您需要考虑计算DPI。

我确实认为这是一个错误,尽管这个解决方案对我来说完全适用。我建议您查看JIRA并查看它是否是已知问题,如果不是,请对问题进行非常具体的解释,最好以可重现的情况作为应用提供。经典将帮助最多。如果它不能在经典中重现,它可能是一个合金问题。

+0

谢谢@Rene Pot!在我的情况下,我将继续使用不透明度来避免尺寸计算,我会为此创建一个JIRA票据。 –

+1

仅供参考:https://jira.appcelerator.org/browse/AC-4706。我在那里贴了你的答案,对你来说没关系? –

+0

真棒,并没有问题 –