JSPatch OC->JS学习(2)
来源:互联网 发布:巨人网络手游官网注册 编辑:程序博客网 时间:2024/05/29 15:13
今天学习了一个例子,参考地址:http://blog.csdn.net/chenyblog/article/details/50537866
直接上代码了:
// ”导入头文件“require("UIView, UILayer, UIButton, UILabel, UIColor, UITextField, UIFont,UIAlertView");defineClass('ViewController : ViewController <UIAlertViewDelegate>', { viewDidLoad:function(){ self.ORIGviewDidLoad(); // 全局变量 index index = (function () { var counter = 0; return function () {return counter += 1;} })(); // Objective-C 里的常量不能直接在 JS 上使用,可以直接在 JS 上用具体值代替,或者在 JS 上重新定义同名的全局变量 UITextBorderStyleNone = 0; UITextBorderStyleLine = 1; UITextBorderStyleBezel = 2; UITextBorderStyleRoundedRect = 3; // 全局变量 btn = null; txfName = null; lblDesc = null; persent = 0.5; screenWidth = self.view().bounds().width; // 获取控制器中的属性 // 设置UI setupUI(); }, touchesBegan_withEvent:function(touches, event) { txfName.resignFirstResponder(); // var btn = btn1;//self.view().viewWithTag(1000); var i = index(); btn.setTitle_forState('' + i, 0); btn.setTag(i+1000); }, // 自定义的方法命名不能加下划线!!! btnClick:function(sender) { var tag = sender.tag(); var alert = UIAlertView.alloc().initWithTitle_message_delegate_cancelButtonTitle_otherButtonTitles("提示", "按钮的tag为 " + (parseInt(tag)-1000), self, "确定", null); alert.show(); }, alertView_clickedButtonAtIndex:function(alertView, buttonIndex) { console.log("buttonIndex=" + buttonIndex); }, textChange:function(sender) { //此处需将oc字符串转为js字符再进行赋值 var str = sender.text().toJS(); console.log('textChange = ' + str); lblDesc.setText(' ' + str); }})function setupUI() { var i = index(); var cornerRadius = 5; var margin = 8; var x = 0; var width = screenWidth - 2 * x; var height = 100; var margin16 = 16; var y = (height + margin) * 1; // 此处应该 * i var view = UIView.alloc().initWithFrame({x:x, y:y, width:width, height:height}); view.setBackgroundColor(UIColor.greenColor()); self.view().addSubview(view); // 创建文本框 txfName = UITextField.alloc().init(); txfName.setBorderStyle(UITextBorderStyleRoundedRect); var txfX = margin; var txfY = margin; var txfW = screenWidth * persent; var txfH = 35; var txfF = {x:txfX, y:txfY, width:txfW, height:txfH}; txfName.setFrame(txfF); console.log("frame=" + txfName.frame()); // 监听文本框值变化事件 txfName.addTarget_action_forControlEvents(self, 'textChange:', 1 << 17); view.addSubview(txfName); // 创建label lblDesc = UILabel.alloc().init(); var lblX = txfX; var lblW = txfW; var lblH = txfH; var lblY = height - lblH - margin; var lblF = {x:lblX, y:lblY, width:lblW, height:lblH}; lblDesc.setFrame(lblF); console.log("lbl frame=" + lblF); lblDesc.layer().setCornerRadius(cornerRadius); lblDesc.setClipsToBounds(1); lblDesc.setBackgroundColor(UIColor.greenColor()); view.addSubview(lblDesc); // 创建按钮 btn = UIButton.buttonWithType(6); btn.setTitle_forState(''+ i, 0); btn.titleLabel().setFont(UIFont.systemFontOfSize(50)); btn.setTag(1000); btn.setBackgroundColor(UIColor.blueColor()); btn.addTarget_action_forControlEvents(self, 'btnClick:', 1 << 6); var btnX = txfF.x + txfW + margin16; var btnY = margin; var btnW = screenWidth - btnX - margin16; var btnH = height - margin * 2; btn.setFrame({x: btnX, y: btnY, width: btnW, height: btnH}); btn.layer().setCornerRadius(cornerRadius); btn.layer().setMasksToBounds(1); view.addSubview(btn);}
最终效果:
0 0
- JSPatch OC->JS学习(2)
- JSPatch OC->JS学习(1)
- [JSPatch使用]OC转JS问题列表
- JSPatch学习(一)
- JSPatch学习(二)
- 使用JSPatch时,OC转JS语法注意
- JSPatch学习
- JSPatch学习系列-JSPatch简介
- oc和jspatch转换工具
- JSPatch实现原理详解:让JS调用/替换任意OC方法
- JSPatch实现原理详解:让JS调用/替换任意OC方法
- JSPatch转换器:可直接将OC代码转换成JS代码
- JSPatch的初步学习
- 热更新JSPatch学习:
- Rollout学习2 JS和OC代码对照篇
- JSPatch
- JSPatch
- JSPatch
- 【DVB】【奥地利】Austria数字电视广播spec
- Webview加载网页时出现NET::ERR_CACHE_MISS的错误
- Android Studio、Gradle常见错误、设置
- 判断点是否在闭合的path中
- Laravel5.2加入百度编辑器
- JSPatch OC->JS学习(2)
- [生存志] 第109节 秦始皇初玩叠人塔
- Java通配符解惑
- 运维学习的第三天
- ajax解析Java传来的json文本中反斜杠(\)问题
- Linux 使用本地yum源及软件包管理
- 研究生周报(第一次)2016/10/10-2016/10/14
- typedef和define的作用域
- 二叉树深度(最大和最小)