对于使用Titanium Appcelerator内置的应用程序,PNG图像无法在iOS(iPad或iPhone)中呈现

时间:2015-11-26 16:54:13

标签: titanium appcelerator

问题:PNG不会渲染。

我最近重新启动了Titanium Appcelerator应用程序的工作,这个应用程序在18个月左右没有被触及。

(我在Mac OS X Yosemite 10.10.15上开发)

跳过几个环节,即安装最新的Appcelerator Studio,最新的Titanium SDK 5.1.0v20150929231927,iOS和Android SDK,更新XCode版本,将项目导入新的工作区(因为以前的工作区不会认识到iOS SDK' s。

我现在可以构建我的应用程序并在iOS模拟器中运行它...但是没有任何PNG渲染(或JPG),并显示"缺少图像图标"代替。 (即使没有更改应用程序代码 - 因此环境或appcelerator问题)。

(请参阅下面的示例代码,我尝试渲染一些ImageView和Button控件)

我唯一可以渲染图像的方法是使用GIF。但是,这不是解决方案,因为我们使用的图像由于质量而不适合转换为GIF。

我试过以下所有这些都不允许我渲染PNG:

将图像移动到不同的文件夹(图片位于/ resources / images /) 试图使用不同的PNG 创建了一个全新的测试项目,它有2个测试窗口,甚至还有2个PNG用于菜单标签按钮,即使它们不能渲染。 尝试渲染其他图像。只有GIF会显示,即使是GIF,也会显示与不呈现的PNG相同的文件夹。 确保使用正确的大小写引用路径和文件。 这一切都意味着我的客户无法对其应用程序进行重要更新。

任何与我的Mac有类似问题或解决方案的人都准备好被抛到窗外了!

可以在此

中找到hello world test app的一些示例代码

附件是来自Hello World测试应用程序的示例代码,我正在尝试呈现的PNG和示例代码输出的屏幕截图(显示2 x gif' s显示但没有其他)。



// SAMPLE TEST CODE:

Titanium.UI.setBackgroundColor("#000");
var tabGroup = Titanium.UI.createTabGroup(),
    win1 = Titanium.UI.createWindow({
        title: "Tab 1",
        backgroundColor: "#000"
    }),
    tab1 = Titanium.UI.createTab({
        icon: "KS_nav_views.png",
        title: "Tab 1",
        window: win1
    }),
    label1 = Titanium.UI.createLabel({
        color: "#999",
        text: "I am Window 1",
        font: {
            fontSize: 20,
            fontFamily: "Helvetica Neue"
        },
        textAlign: "center",
        width: "auto"
    }),
    image1 = Titanium.UI.createImageView({
        top: 50,
        left: 50,
        image: "KS_nav_ui.png"
    }),
    image2 = Titanium.UI.createImageView({
        top: 100,
        left: 50,
        image: "/images/iconjpg.jpg"
    }),
    image3 = Titanium.UI.createImageView({
        top: 150,
        left: 50,
        image: "/iphone/iconjpg.jpg"
    }),
    image4 = Titanium.UI.createImageView({
        top: 200,
        left: 50,
        image: "/iconjpg.jpg"
    }),
    image5 = Titanium.UI.createImageView({
        top: 250,
        left: 50,
        image: "/images/btn-meetings.gif"
    }),
    image6 = Titanium.UI.createImageView({
        top: 300,
        left: 50,
        image: "/images/btn-meetings.png"
    }),
    testButton = Ti.UI.createButton({
        backgroundImage: "/images/btn-meetings.png",
        height: 76,
        width: 150,
        top: 350,
        left: 50
    }),
    testButton2 = Ti.UI.createButton({
        backgroundImage: "/images/icongif.gif",
        height: 76,
        width: 150,
        top: 400,
        left: 50
    });

	win1.add(image1), win1.add(image2), win1.add(image3), win1.add(image4), win1.add(image5), win1.add(image6), win1.add(testButton), win1.add(testButton2), win1.add(label1);

	var win2 = Titanium.UI.createWindow({
        title: "Tab 2",
        backgroundColor: "#fff"
    }),
    tab2 = Titanium.UI.createTab({
        icon: "KS_nav_ui.png",
        title: "Tab 2",
        window: win2
    }),
    label2 = Titanium.UI.createLabel({
        color: "#999",
        text: "I am Window 2",
        font: {
            fontSize: 20,
            fontFamily: "Helvetica Neue"
        },
        textAlign: "center",
        width: "auto"
    });

	win2.add(label2), tabGroup.addTab(tab1), tabGroup.addTab(tab2), tabGroup.open(),
		function() {
			var e = require("ti.cloud"),
				i = "production" === Ti.App.deployType.toLowerCase() ? "production" : "development",
				t = Ti.App.Properties.getString("acs-username-" + i),
				a = Ti.App.Properties.getString("acs-password-" + i);
			i && t && a && e.Users.login({
				login: t,
				password: a
			}, function(e) {
				"development" === i && (Ti.API.info("ACS Login Results for environment `" + i + "`:"), Ti.API.info(e)), e && e.success && e.users && e.users.length ? Ti.App.fireEvent("login.success", e.users[0], i) : Ti.App.fireEvent("login.failed", e, i)
			})
		}();




Sample png that will not render in app

Rendered output from sample code snippet, images shown are only the gifs, jpg and pngs are rendering with the missing icon

3 个答案:

答案 0 :(得分:1)

我刚使用5.1.1.GA和your image ..

运行以下内容
var win = Ti.UI.createWindow({
    backgroundColor: 'white'
});

win.add(Ti.UI.createImageView({
    image: '/images/Jldsg.png'
}));

win.open();

这对我来说很好:

ipad

除了你的代码中有很多linting errors之外,我不知道为什么它不适合你。

  

JSLint无法完成。

     

第68行第17栏

     

预期';'而是   锯 ','。 win1.add(image1),win1.add(image2),win1.add(image3),   win1.add(image4),win1.add(image5),win1.add(image6),   win1.add(testButton),win1.add(testButton2),win1.add(label1);

     

第68行第17栏

     

意外','。 win1.add(image1),win1.add(image2),   win1.add(image3),win1.add(image4),win1.add(image5),   win1.add(image6),win1.add(testButton),win1.add(testButton2),   win1.add(label1的);

答案 1 :(得分:0)

我今天遇到了类似的问题,特别是我用于标签图标的PNG,这让我想到了这个问题。我离开电脑一段时间,然后节点崩溃了。

Appcelerator Studio仍在运行,但我知道构建过程涉及Node脚本,因此我退出Appcelerator Studio(和iOS模拟器)并重新启动它 - 问题就消失了。

像大卫一样,当正确的代码无效时,我几乎无法忍受我的挫败感。至少在我的情况下,我能够确定罪魁祸首是周围环境中的腐败。

答案 2 :(得分:0)

我遇到了同样的问题,PNG没有渲染。 从我的<use-app-thinning>true</use-app-thinning>文件中删除tiapp.xml标记有效。他们马上回来了。

我正在使用TiSDK v5.4,OSX Yosemite和xCode 7.2。