Kivy跨平台技术开发iOS

#kivy

Kivy是一套专门用于跨平台快速应用开发的开源框架,使用Python和Cython编写,对于多点触控有着非常良好的支持,是一套专门用于跨平台快速应用开发的开源框架,使用Python和Cython编写,基于OpenGL ES 2只需一套代码,即可运行于主流桌面和移动平台之上,支持大部分原生输入协议和设备,包括WM_Touch、WM_Pen、Mac OS X Trackpad和Magic Mouse、Mtdev、Linux Kernel HID、TUIO,此外,还包含一个多点触控的鼠标模拟器。

#demo

from kivy.app import App

from kivy.uix.button import Button

class TestApp(App):

def build(self):

return Button(text='Hello World')

TestApp().run()

这样就可以在Mac和ios以及安卓上运行


Kivy跨平台技术开发iOS_第1张图片
kivy demo

kivy 与iOS交互,新建一个demo.py

print "Hello Kivy"

python demo.py

ios .m文件里面 调用

FILE * fp = fopen(Queuet.py", "r");

if (fp == NULL)

return 1;

PyRun_SimpleFile(fp, "demo.py");

iOS与python交互通过一个文件,或字符串的形式来做PyRun_String,PyRun_SimpleFile

这样的方式对于编译型语法的程序员来说很别扭,不过kivy主要开发是用python,

PyRun_SimpleFile估计是官方给的一个并不好的交互方式。

python调用iOS pyobjus,主要是调用iOS里面一些特有的类型,目前支持delegate回调方式

from pyobjus import autoclass

from pyobjus.dylib_manager import load_framework, INCLUDE

load_framework(INCLUDE.AppKit)

NSAlert = autoclass('NSAlert')

NSString = autoclass('NSString')

ns = lambda x: NSString.alloc().initWithUTF8String_(x)

alert = NSAlert.alloc().init()

alert.setMessageText_(ns('Hello world from python!'))

alert.addButtonWithTitle_(NSString.stringWithUTF8String_("OK"))

alert.addButtonWithTitle_(NSString.stringWithUTF8String_("Cancel"))

alert.runModal()

python 对于网络,数据库,动画,3d,逻辑实现是可以的,但是kivy的gui界面实在做得是差强人意,和xib相比可以用粗制滥造来形容,开发人员少,毕竟没苹果那么财雄势大。这点还是可以理解的

Kivy跨平台技术开发iOS_第2张图片
lisview
Kivy跨平台技术开发iOS_第3张图片
UI可视化编辑器
Kivy跨平台技术开发iOS_第4张图片
编辑器

整体来说做逻辑可以考虑kivy,,另外就是kivy官方的更新速度不是很快。 编译器的完善性有待项目检验,不过它的UI框架使用起来比iOS方便很多,独有的kivy语法很神奇,写界面很方便。但是界面确实不敢恭维。

期待kivy进一步完善。

你可能感兴趣的:(Kivy跨平台技术开发iOS)