titanium ti.paint toimage() 在 ios 上绘图后返回 {}
titanium ti.paint toimage() is returning {} after drawing on ios
以下代码导致不同的输出不同 android 和 ios。下面的 myBlob 是 ios 上的 {} - 即使在屏幕上绘制后图像也是空的。在 Android 中,它是一个具有属性的对象并且工作正常,但 iOS 图像始终是空白的。
这在过去的 ios 版本和构建中是有效的,所以我没有正确构建它吗?我们正在为 Titanium SDK 使用 5.3.0 GA。我在 TiApp 编辑器中检查了模块 iOS。
function uploadImage(signed) {
if (signed) {
var myBlob;
try {
myBlob = $.viewPaint.toImage();
var myImage = Titanium.Utils.base64encode(myBlob).toString();
$.nextAction.image = myImage;
} catch (ex) {
Titanium.API.error('FAILURE HANDLING SIGNATURE DOCUMENT: ' + ex);
return;
}
}
$.nextAction.perform(Alloy.Globals.requests);
}
iPhone
的 Ti 油漆模块
#
# this is your module manifest and used by Titanium
# during compilation, packaging, distribution, etc.
#
version: 1.4.0
apiversion: 2
architectures: armv7 i386 x86_64 arm64
description: Provides a paint surface user interface view.
author: Jeff Haynie
license: Appcelerator Commercial License
copyright: Copyright (c) 2010-2014 by Appcelerator, Inc.
# these should not be edited
name: paint
moduleid: ti.paint
guid: 43f13063-d426-4e9c-8a7a-72dc5e4aec57
platform: iphone
minsdk: 3.4.1.GA
将执行添加到操作对象的先前代码
var route = action.action.uri;
Ti.API.info('route = ' + route);
newAction.execute = function(requestManager) {
Titanium.App.fireEvent('app:index:view:requested',
controller : 'signscreen',
uri : route
});
};
触发打开事件的代码:
Titanium.App.fireEvent('app:index:view:requested', {
controller : 'signature'
});
您的 {}
控制台日志值是一个误会。
测试于:
- TiSDK 5.2.2.GA, 5.3.0.GA
- ti.paint: 1.4.0, 1.4.1(我们的版本有被 appc 忽略的修复)
- 在tiapp.xml
中有<run-on-main-thread>false</run-on-main-thread>
使用模块中的示例 app.js 并添加以下内容:
var buttonSave = Ti.UI.createButton({ bottom:100, right:10, width:75, height:30, title:'Save' });
buttonSave.addEventListener('click', function(e){
var test = paintView.toImage();
console.log(test.length);
console.log(paintView.toImage());
var imageFile = Titanium.Filesystem.getFile(Titanium.Filesystem.applicationDataDirectory,"testing.png");
imageFile.write(paintView.toImage());
});
win.add(buttonSave)
你会发现
- 记录的值总是
{}
- 当您向 paintView 添加像素时,分配给 Image() 的对象的长度会增加
- 图像确实写入文件。
如果您的视图层次结构中有任何内容覆盖您的绘图视图,例如确认对话框或在导航控制器中关闭视图,并且在 window 关闭绘图视图之前未抓取您的绘图视图,将始终 return 空。 android 将继续正常工作,但 ios 不会,因为视图不存在于视图层次结构中。
以下代码导致不同的输出不同 android 和 ios。下面的 myBlob 是 ios 上的 {} - 即使在屏幕上绘制后图像也是空的。在 Android 中,它是一个具有属性的对象并且工作正常,但 iOS 图像始终是空白的。
这在过去的 ios 版本和构建中是有效的,所以我没有正确构建它吗?我们正在为 Titanium SDK 使用 5.3.0 GA。我在 TiApp 编辑器中检查了模块 iOS。
function uploadImage(signed) {
if (signed) {
var myBlob;
try {
myBlob = $.viewPaint.toImage();
var myImage = Titanium.Utils.base64encode(myBlob).toString();
$.nextAction.image = myImage;
} catch (ex) {
Titanium.API.error('FAILURE HANDLING SIGNATURE DOCUMENT: ' + ex);
return;
}
}
$.nextAction.perform(Alloy.Globals.requests);
}
iPhone
的 Ti 油漆模块#
# this is your module manifest and used by Titanium
# during compilation, packaging, distribution, etc.
#
version: 1.4.0
apiversion: 2
architectures: armv7 i386 x86_64 arm64
description: Provides a paint surface user interface view.
author: Jeff Haynie
license: Appcelerator Commercial License
copyright: Copyright (c) 2010-2014 by Appcelerator, Inc.
# these should not be edited
name: paint
moduleid: ti.paint
guid: 43f13063-d426-4e9c-8a7a-72dc5e4aec57
platform: iphone
minsdk: 3.4.1.GA
将执行添加到操作对象的先前代码
var route = action.action.uri;
Ti.API.info('route = ' + route);
newAction.execute = function(requestManager) {
Titanium.App.fireEvent('app:index:view:requested',
controller : 'signscreen',
uri : route
});
};
触发打开事件的代码:
Titanium.App.fireEvent('app:index:view:requested', {
controller : 'signature'
});
您的 {}
控制台日志值是一个误会。
测试于:
- TiSDK 5.2.2.GA, 5.3.0.GA
- ti.paint: 1.4.0, 1.4.1(我们的版本有被 appc 忽略的修复)
- 在tiapp.xml 中有
<run-on-main-thread>false</run-on-main-thread>
使用模块中的示例 app.js 并添加以下内容:
var buttonSave = Ti.UI.createButton({ bottom:100, right:10, width:75, height:30, title:'Save' });
buttonSave.addEventListener('click', function(e){
var test = paintView.toImage();
console.log(test.length);
console.log(paintView.toImage());
var imageFile = Titanium.Filesystem.getFile(Titanium.Filesystem.applicationDataDirectory,"testing.png");
imageFile.write(paintView.toImage());
});
win.add(buttonSave)
你会发现
- 记录的值总是
{}
- 当您向 paintView 添加像素时,分配给 Image() 的对象的长度会增加
- 图像确实写入文件。
如果您的视图层次结构中有任何内容覆盖您的绘图视图,例如确认对话框或在导航控制器中关闭视图,并且在 window 关闭绘图视图之前未抓取您的绘图视图,将始终 return 空。 android 将继续正常工作,但 ios 不会,因为视图不存在于视图层次结构中。