#ios #titanium #lazy-loading
#iOS #titanium #отложенная загрузка
Вопрос:
У меня есть 10 просмотров изображений, наложенных друг на друга. (для цикла)
для 9 из них установлено значение visible = false.
для 1 из них установлено значение visible = true.
Мне было интересно, есть ли способ загружать изображение только тогда, когда для видимости imageview установлено значение true. т.е. После удаления изображения из стека.
Проблема, с которой я сталкиваюсь, заключается в том, что он одновременно загружает все изображения в стек, замедляя все.
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;
}
[..]
В этом фрагменте кода в основном говорится, что контейнеры складываются друг на друга, как только цикл выполнит показ последнего контейнера.
Позже у меня есть событие onclick для каждого вида изображения, при нажатии на которое контейнер удаляется в верхней части стека и становится видимым под ним.
То, что я пытаюсь сделать, это ЗАГРУЖАТЬ удаленные изображения ImageView только тогда, когда контейнер становится видимым. Прямо сейчас он попытается загрузить изображения, видимые или невидимые.
Комментарии:
1. Опубликуйте некоторый код, показывающий, что у вас есть и где именно ваша проблема.
2. проверьте исправленный пост, спасибо
Ответ №1:
Вы можете попробовать задать путь к изображению для другого свойства:
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;
Комментарии:
1. Спасибо, я попробую это. Разве отложенная загрузка не должна означать, что она загружает ее по требованию? то есть то, что вы описали, и мне не нужно беспокоиться об этом
2. Это сработало отлично. Просто попробовал. Не уверен, почему по умолчанию не было отложенной загрузки.
3. Изображения загружаются, как только вы добавляете их для просмотра.