Ios 钛合金ImageView动画宽度和高度
我尝试用钛合金创建ImageView,如下所示:Ios 钛合金ImageView动画宽度和高度,ios,animation,imageview,titanium,Ios,Animation,Imageview,Titanium,我尝试用钛合金创建ImageView,如下所示: var animationView = Titanium.UI.createImageView ( { images:animationImages, duration:50, repeatCount:0, width: '90dp', height: '270dp' } ); function Animation(data) { var w
var animationView = Titanium.UI.createImageView
(
{
images:animationImages,
duration:50,
repeatCount:0,
width: '90dp',
height: '270dp'
}
);
function Animation(data)
{
var width = data.hasOwnProperty("width") ? data.width : Ti.UI.SIZE;
var height = data.hasOwnProperty("height") ? data.height: Ti.UI.SIZE;
var duration = data.hasOwnProperty("duration") ? data.duration : 50;
var imageFiles = data.hasOwnProperty("images") ? data.images : [];
var images = [];
var container = Ti.UI.createView
(
{
width:width,
height: height
}
);
for(var i=0; i<imageFiles.length; i++)
{
var image = Ti.UI.createImageView
(
{
image:imageFiles[i],
width:width,
height:height
}
);
if(i!=0)
image.setVisible(false);
container.add(image);
images.push(image);
}
container.activeImage = 0;
container.intervalId = null;
container.setActiveImage = function(index)
{
if(container.intervalId == null)
container.activeImage = index;
}
container.start = function()
{
var callback = function()
{
for(var i=0; i<images.length; i++)
{
if(i == container.activeImage)
images[i].setVisible(true);
else
images[i].setVisible(false);
}
container.activeImage = (container.activeImage + 1) % images.length;
}
container.intervalId = setInterval ( callback, duration );
}
container.stop = function()
{
clearInterval(container.intervalId);
container.intervalId = null;
}
return container;
}
module.exports = Animation;
var Animation = require('...path to your animation file');
var myAnimation = new Animation
(
{
width:'100dp',
height:'100dp',
duration:50, //duration while one frame is showing
images:['one.png', 'two.png'...], //full paths
}
);
//start:
myAnimation.start();
//stop
myAnimation.stop();
在安卓系统上,它的大小和预期的一样,但在IOS系统上,它根本无法缩放。有什么事吗,我做错了?或者我应该一帧一帧地手动创建图像视图,然后用
setInterval
更改它们?这实际上不是一个一致的解决方案,它应该是一个注释,但由于我没有足够的代表,我不得不将其作为一个答案来写
首先,我会尝试给它一个顶部和左侧属性。
其次,这些图像是从远程URL检索的吗?远程URL仅在Android中受支持。如果是这样的话,你可以像你在问题中说的那样做一个变通办法
最后,“dp”只适用于android,因此它在iOS中根本不会缩放,它将简单地删除“dp”并将数字用作“点”,在非视网膜屏幕上,像素数相同,在视网膜显示器上,像素数将加倍。我最终决定创建自己的动画类,如下所示:
var animationView = Titanium.UI.createImageView
(
{
images:animationImages,
duration:50,
repeatCount:0,
width: '90dp',
height: '270dp'
}
);
function Animation(data)
{
var width = data.hasOwnProperty("width") ? data.width : Ti.UI.SIZE;
var height = data.hasOwnProperty("height") ? data.height: Ti.UI.SIZE;
var duration = data.hasOwnProperty("duration") ? data.duration : 50;
var imageFiles = data.hasOwnProperty("images") ? data.images : [];
var images = [];
var container = Ti.UI.createView
(
{
width:width,
height: height
}
);
for(var i=0; i<imageFiles.length; i++)
{
var image = Ti.UI.createImageView
(
{
image:imageFiles[i],
width:width,
height:height
}
);
if(i!=0)
image.setVisible(false);
container.add(image);
images.push(image);
}
container.activeImage = 0;
container.intervalId = null;
container.setActiveImage = function(index)
{
if(container.intervalId == null)
container.activeImage = index;
}
container.start = function()
{
var callback = function()
{
for(var i=0; i<images.length; i++)
{
if(i == container.activeImage)
images[i].setVisible(true);
else
images[i].setVisible(false);
}
container.activeImage = (container.activeImage + 1) % images.length;
}
container.intervalId = setInterval ( callback, duration );
}
container.stop = function()
{
clearInterval(container.intervalId);
container.intervalId = null;
}
return container;
}
module.exports = Animation;
var Animation = require('...path to your animation file');
var myAnimation = new Animation
(
{
width:'100dp',
height:'100dp',
duration:50, //duration while one frame is showing
images:['one.png', 'two.png'...], //full paths
}
);
//start:
myAnimation.start();
//stop
myAnimation.stop();
谢谢你的回答,我最终决定一帧一帧地创建动画,一次只显示一个图像。这太棒了。非常感谢你。我还没有试过,但是你有没有性能问题?我在考虑使用视图而不是ImageView,我的另一个想法是只使用一个图像并更改backgroundImage属性。还有一件事。您的代码似乎会重复动画,直到取消为止。我还考虑为循环添加一个参数。无论如何,我会在接下来的几天里尝试所有这些方法并公布结果。非常感谢。@Leonardo我认为,这不是最有利于性能的事情,但它完成了任务:)当我有时间时,我会再次研究它,并添加循环。我很高兴,你喜欢它!