Titanium 如何替换视图

Titanium 如何替换视图,titanium,titanium-mobile,Titanium,Titanium Mobile,应用程序需要多个窗口(让我们调用A、B、C)。每个窗口都有多个视图(表视图、图像视图以及web视图)。假设窗口A有三个视图(x、y、z),窗口B有三个视图(d、e、f)。应用程序需要在方向改变时显示不同大小的图像 我使用手势事件监听器和循环窗口查看视图,并用新图像替换视图,实现了同样的效果。我遇到的问题是,当我们从一个窗口导航到另一个窗口,并且方向发生变化时,循环后的视图加载会发生变化。有没有更好的方法实现同样的目标 在Tianium中是否有类似以下代码的方法来替换视图 var self=Ti.

应用程序需要多个窗口(让我们调用A、B、C)。每个窗口都有多个视图(表视图、图像视图以及web视图)。假设窗口A有三个视图(x、y、z),窗口B有三个视图(d、e、f)。应用程序需要在方向改变时显示不同大小的图像

我使用手势事件监听器和循环窗口查看视图,并用新图像替换视图,实现了同样的效果。我遇到的问题是,当我们从一个窗口导航到另一个窗口,并且方向发生变化时,循环后的视图加载会发生变化。有没有更好的方法实现同样的目标

在Tianium中是否有类似以下代码的方法来替换视图

var self=Ti.UI.currentWindow
var newView=Ti.UI.createImageView({image:'abc.png'})
self.replace(self.children[1],newView )

不幸的是,现在有了
replace
方法。

您需要删除整个视图并再次添加,但如果在同一标高上有多个视图,则可能会导致布局错误。然后,实施取决于设置的布局(
垂直
水平
复合
等)

例如,在
vertical
布局中,删除一个项目并简单地添加一个新项目将删除指定的项目,但会在末尾追加新项目,因为您无法指定添加顺序


如果您有一个组合布局,您可以指定绝对位置,但是添加一个新视图会导致此视图的
zIndex
更高,因此它会隐藏以前添加在相同/相似位置的视图。

为什么不简单地更改图像链接

var self = Ti.UI.currentWindow;
self.children[1].image = 'bcd.png';
。但这并不完全是好的做法(特别是对于iOS)

如果您将视图的
宽度
高度
定义为百分比或
Ti.UI.FILL
(如果您有
复合
布局),则通常可以很好地处理方向更改。检查您是否没有提供视图绝对坐标,如果您有垂直或水平布局,通常不必担心方向的变化,除非您没有将视图正确嵌套在主容器中。

Prasad

如果这只是为了确保图像在不同方向上看起来不错,那么您可以使用Tianium在android/images文件夹中提供的不同文件夹。您可以为每个方向和设备大小制作不同的图像。对于IOS,您可以只更改方向上的图像,就像您已经做的那样

如果您关注布局,您可以做以下几件事:

1.以百分比形式给出所有高度或宽度值。这样,一旦方向自动改变,所有元素都将重新调整大小

2.在每个打开的窗口上,检查默认方向是垂直还是水平,并相应地设置imageView的图像属性

Ti.UI.orientation
默认情况下,此属性将为您提供窗口的方向。此属性的值可以是

人像

Ti.UI.Upper_肖像

Ti.UI.LANDSCAPE_左

Ti.UI.scape_右

使用“if-else”并相应地设置图像