我有 10 个 ImageView 相互堆叠。 (for 循环)
其中 9 个设置为 visible = false。
其中 1 个设置为 visible = true。
我想知道是否有一种方法可以仅在 imageview 可见性设置为 true 时加载图像。即在 ImageView 从堆栈中移除之后。
我遇到的问题是它同时加载堆栈中的所有图像,减慢了一切。
for (var i = 0; i < peopleJson.users.length; i++) {
//create containers to store every child object
containers[i] = Titanium.UI.createView({
id : 'container',
visible : false,
width : '100%',
zIndex : '0',
});
imageSwipeView[i] = Titanium.UI.createImageView({
image : peopleJson.users[i].pictures[0],
visible : true,
containerObj : containers[i],
containerObjPrev : containers[temp],
pictures : peopleJson.users[i].pictures,
indImageView : indImageView[i],
basket : LabelBasket[temp],
top : 0,
zIndex : 2,
width : '100%',
defaultImage : 'images/plainbg.png',
height : 510,
});
containers[i].add(imageSwipeView[i]);
win.add(containers[i]);
if (i == (peopleJson.users.length - 1)) {
//show last container when for loop is executed
containers[i].visible = true;
$.view_indicator.visible = false;
}
[..]
这个代码片段基本上是说将容器堆叠在一起,一旦循环执行显示最后一个容器。
稍后,我为每个 ImageView 创建了一个 onclick 事件,如果单击,它会移除堆栈顶部的容器并使下方的容器可见。
我正在尝试做的是仅在容器可见时加载 imageView 远程图像。现在,它将尝试加载可见或不可见的图像。
最佳答案
您可以尝试将图像路径设置为不同的属性:
imageSwipeView[i] = Titanium.UI.createImageView({
_image : peopleJson.users[i].pictures[0],
...
})
当你设置 visible = true
更新 image
属性时:
containers[i].visible = true;
if (!imageSwipeView[i].image) {
imageSwipeView[i].image = imageSwipeView[i]._image;
}
$.view_indicator.visible = false;
关于ios - Titanium 仅在 ImageView 可见时延迟加载,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24374502/