ionic
安装ionic1$ npm install -g cordova ionic 创建工程123$ ionic start myApp blank$ ionic start myApp tabs$ ionic start myApp sidemenu #运行1234$ cd myApp$ ionic platform add ios$ ionic build ios$ ionic emulate io
安装ionic1$ npm install -g cordova ionic 创建工程123$ ionic start myApp blank$ ionic start myApp tabs$ ionic start myApp sidemenu #运行1234$ cd myApp$ ionic platform add ios$ ionic build ios$ ionic emulate io
大mac简单方便粗暴1$brew install nginx 启动nginx ,sudo nginx ;访问localhost:8080 发现已出现nginx的欢迎页面了。 备注: ln -s /usr/local/sbin/nginx /usr/bin/nginx 做了个软连接。常用的指令有:nginx -V 查看版本,以及配置文件地址nginx -v 查看版本nginx -c filenam
install1sudo npm install -g phonegap 安装 cordova1$ sudo npm install -g cordova 创建工程1234$ cordova create hello com.example.hello "HelloWorld"$ cd hello$ cordova platform add ios$ cordova prepa
xib简介xib用来描述软件界面,它用Interface Builder工具来编辑。本文主要介绍使用xib的一些技术,即在xib中布局UI,然后xib与code相结合,快速UI开发介绍。本文主要讲解的也就是加载xib的技术。
刚开始写iOS的时候,所有的分辨率都是320*480,所以UI布局都可以用代码写死。也写多iPad的代码,为了适应横屏,写了很多布局代码,当时除此之外,也没什么好的办法。后来有了iPhone5,有把原来的代码改改改……
iOS8已经发布了快半年时间了,其中一个重大的更新就是扩展(Extension)。以前的iOS非常封闭,不同的APP之间很难相互通信,虽然保证了使用的安全性,但毕竟限制了很多功能,最明显的就是输入法了。苹果经过了深思熟虑之后,终于给开发者们一个解决方案——扩展。
做了一个使用推送功能的应用,遇到了一些问题整的很郁闷,搞了两天总算是弄明白了,特此分享给大家。 本帖主要是针对产品发布版本的一些问题,综合了网上一些资料根据自己实践写的,不过测试也可以看看 首先要感谢那些富有分享精神的大牛们所作的贡献,让我这个新手可以从零把推送功能整上线。 至于推送功能的原理什么的我就不说了,网上关于推送的资料很多,不过有很多一部分都写的不知所以然,不过原理还是可以弄明白的。 这
我们通过身体力行和帮助他人来揭示更好的软件开发方式。经由这项工作,我们形成了如下价值观: 个体与交互 重于 过程和工具 可用的软件 重于 完备的文档 客户协作 重于 合同谈判 响应变化 重于 遵循计划 在每对比对中,后者并非全无价值,但我们更看重前者。 敏捷宣言》背后的12准则 我们遵循以下准则: 我们的最高目标是,通过尽早和持续地交付有价值的软件来满足客户。 欢迎对需求提出变更—
ClippingNode的使用ClippingNode示例123456789101112131415auto bg = LayerColor::create(Color4B(255, 255, 255,255));this->addChild(bg, -1);//1 auto stencil = Sprite::create("CloseNormal.png");sten
cocos开发遇到的工具 Cocos2d-x Cocos2d-x Cocos2d-JS Cocos Code IDE Cocos2d-lua(quick-cocos2d-x) ParticleDesigner Spine Cocos Studio Tiled Map Editor texturepacker
Cocos2d-x 多分辨率适配完全解析Overview从Cocos2d-x 2.0.4开始,Cocos2d-x提出了自己的多分辨率支持方案,废弃了之前的retina相关设置接口,提出了design resolution概念。1234567Director::getInstance()->getOpenGLView()->setDesignResolutionSize() //设计分辨
粒子系统简介粒子系统是指计算机图形学中模拟特定现象的技术,它在模仿自然现象、物理现象及空间扭曲上具备得天独厚的优势,为我们实现一些真实自然而又带有随机性的特效(如爆炸、烟花、水流)提供了方便。Cocos2d-x引擎中就为我们提供了强大的粒子系统 粒子属性一个强大的粒子系统它必然具备了多种多样的属性,这样才能配置出多样的粒子。下面就来看看粒子系统的主要属性吧。 主要属性: _duration 发射器
场景转换(Transitions)Cocos2d-x最爽的一个特性之一就是提供了在两个不同场景之间直接转换的能力。例如:淡入淡出,放大缩小,旋转,跳动等。从技术上来说,一个场景转换就是在展示并控制一个新场景之前执行一个转换效果。 场景之间通过TransitionScene系列类来实现过渡跳转的效果。TransitionScene继承于Scene,该系列类主要是与场景切换特效相关的一些使用类。如Tr
骨骼动画详解-Spine骨骼动画编辑器——Spine收费的 #Spine动画的使用Cocos2d-x程序中,使用Spine动画首先需要包含spine的相关头文件。123#include <spine/spine-cocos2dx.h>#include "spine/spine.h"using namespace spine; 创建一个Spine动画对象,将动画文件和
搭建环境 创建新工程: python cocos.py new HelloWorldDemo -p com.coco2dx.org -l cpp -d ~/Desktop 参数说明: HelloWorldDemo为项目名称 -p后面接包名 -l后面接开发语言类型,有cpp, lua, js三种类型 -d后面接项目存放的目录 搭建环境新建工程当然也可以用cocosstudio了。新建的时候勾选
调度器(scheduler)重载系统的调度器Cocos2d-x中Node默认是没有启用update事件的,因此你需要重载update方法来执行自己的逻辑代码。通过执行schedulerUpdate()调度器每帧执行 update方法,如果需要停止这个调度器,可以使用12以下代码用来测试该调度器:` HelloWorldScene.hvoid update(float dt) override;12
锚点(Anchor Point)我们用以下代码为例,将红色层的Anchor Point设为中点放在屏幕中央,绿色层添加到红色层上,绿色层锚点为右上角:注:因为Layer比较特殊,它默认忽略锚点,所以要调用ignoreAnchorPointForPosition()接口来改变锚点,关于ignoreAnchorPointForPosition()接口的使用说明,我们将在后面详细讲解。123456789
UICollectionView是iOS6添加的一个控件,是一种新的数据展示方式,简单来说可以把他理解成多列的UITableView,最简单的UICollectionView就是一个GridView,可以以多列的方式将数据进行展示。
tips:方便程序没有连着Xcode跑时定位bug(目前觉得没什么好写的就是) 安装 下载iconsole代码,将其中这两个文件拖入现有代码中 配置添加头文件"iConsole.h"```123456789101112在使用其功能之前有一点要注意,需要将AppDelegate里初始的UIWindow需要以iConsoleWindow来初始化,并添加```iConsoleDelegate``
为什么要有代码规范?对于团队,如果代码风格不统一,阅读或修改同事的代码会非常困难,造成潜在的风险。 对于个人,代码规范是对自身编码习惯的一种监督,如果没有这种监督,有时候因为偷懒,会写出难看的代码,时间长了自己都看不懂。这样对于代码的维护性是不利的。 代码规范的内容?代码规范包含的范围十分广泛。从一个变量的命名到一个类的设计,我觉得都属于代码规范的范畴。从实践的角度,可以把代码规范分成两个部分: 第一部分是规则,即一定要这么做。这里面没有对错,但需要统一。包含变量的命名、函数的命名、模块的组织、代码块的组织、宏、枚举、常量的声明、函数的粒度。 第二部分是风格,即一种模式化的代码设计结构。我们实现某个功能时,往往不止一种实现方式。每一种实现方式没有绝对的高低之分,不同角度的解读,就会有不同的偏好。所以这个层面上的代码规范,只能求同存异。但是不管怎样,每个人必须要有一致性的风格。就像不同的小区可以有不同的风格,但同一个小区只能有一种设计风格。风格包含代码设计中的抽象概念,比如接口、继承等等。
tips:把项目中的解析json的sbjson ,网上提到的JsonKit和apple提供的自带json解析方法进行比较所解析的json是来自项目当中服务返回的商家列表信息具体如下图
简介该基类参考原先项目中BaseViewController等几个类 进行修改 功能暂时满足目前项目需求 日后更新会根据项目迭代中提出的需求在进行修改 ##属性和函数说明 LCViewControllerShowType:viewController出现的方式 具体分为123LCViewControllerShowTypePush (pop/push方式)(默认)LCViewControllerShowTypePresent (present/dismiss方式)LCViewControllerShowTypePresentBasic (作为没有登录的情况下,登陆界面返回按钮 跳转到首页的凭据)
####### 文章参照cucuz的数据存储Library类 的目的 方便项目当中数据的存储,提供简单的接口供使用,根据存储的位置划分可以分为缓存和本地存储,其中包括 NSArray, NSDictionary, NSData,NSString,UIImage 等常用数据类型,自定义Object(自行实现NSCoding协议) 类的函数介绍 类初始化(单例) 1LCDataManager *dataManager = [LCDataManager shareManager]; 首先,我们创建一个对象,下文将以它作为存储的一个依据 ##Cache block
###坑爹的高德项目中地图原来用的高德sdk,其实我不知道当时为什么就用了高德,但既然用了,那么就在此基础上开发吧。可是写着写着,问题就来了: 问题链接。虽然这个问题不是什么太大的问题,但保不准以后还会遇到什么别的坑,而且以高德的效率,短期内肯定不会解决的。那为什么还要用那个sdk呢?好像我们用到的功能苹果自带的MapKit都能实现啊,而且高德官网上的合作伙伴(携程、美团)也是用的原生的MapKit(从地图默认加载背景就可以看出来)。后来只花了一点点时间就切换到苹果的MapKit(API是一样的),目前还没发现什么bug。 ###坐标转换之中国特色因为不用高德了,所以当前位置经纬度就用CoreLocation来获取。可是当你把获取的经纬度放到MKMapView中显示,位置竟然有偏移,而且还不小。 这是苹果的bug吗?不是,是有关部门的功劳。我们只有一个地球,所以地球上每个点的经纬度是固定的,国际上有个通用标准,简称国际标准。CoreLocation取到的经纬度符合国际标准。 可是在国内,由于国家安全,有关部门制定了一套新的标准,简称国家标准。只要是在国内发行的地图(包括电子地图),都要按国家标准来,不然就是非法的。所以苹果手机中的国内地图肯定也是改良过的。 我拿着国际标准的经纬度放到改良过的符合国家标准的地图中,显然会发生偏移。 解决办法就是将国际标准的经纬度转换成国家标准的经纬度。算法是现成的(以前用高德sdk获取当前位置的经纬度本来就是国家标准的,所以没事。)
简介筛选功能在慧驾项目中用的比较多,所以抽取出来,以便简化代码,便于维护 类与方法说明LCMenuView菜单标题相关,与此次迭代UI相同,以后根据UI的变更进行修改,提供方法和属性如下: - (id)initWithFrame:(CGRect)frame // segmentWidths:(NSArray *)widths // 每个segment的宽度,类型NSNumber segmentTitles:(NSArray *)titles // 标题,类型NSString popups:(NSArray *)popups // 弹出菜单,类型LCMenuPopupView parentView:(UIView *)parent; // menu的parentView
1、先从github上down代码,可能比较慢,慢慢来不着急。 https://github.com/appium/appium.git2、cd到appiummulu,执行一下代码安装依赖包 ./reset.sh –hardcore –ios –dev –verbose3、启动appium appium &4、编译程序 xcodebuild -sdk iphones
高德地图sdk是目前国内使用比较多的地图类sdk(还有百度地图也不错),目前项目中也用到了,但是相关封装还是不够清晰。为了做好这一层封装,首先需要把高德地图sdk研究一下。 高德地图有各种语言版本的sdk,其中iOS的sdk就包含基本sdk、云图sdk,导航sdk。后两个sdk暂时用不到,而基本sdk中又包含2d(栅格地图)和3d(矢量地图)两个版本的库以及搜索的库。今天要分析的就是2d和搜索的framework,最新的sdk版本是2.4.0。
将下面代码添加到主题functions.php搜索文件中: function coolwp_remove_open_sans_from_wp_core() { wp_deregister_style( 'open-sans' ); wp_register_style( 'open-sans', false ); wp_enqueue_style('open-sans','
aapium,http://appium.io appium,git地址 appium的ios示例 1、下载nodejs并安装2、改变node的所属权限 cd /usr/local/lib sudo chown -R &lt;#用户名#&gt; node_modules 3、卸载appium,或安装 npm uninstall appium -g npm instal
nrm 是一个 NPM 源管理器,允许你快速地在如下 NPM 源间切换: npmcnpmstrongloopeuropeanaustralianodejitsutaobao安装 $ npm install -g nrm使用 列出可选的源 ; nrm ls npm —- https://registry.npmjs.org/cnpm — http://r.cnpmjs.org/taobao
背景分享,是APP中一个基础功能,可以为APP提供传播渠道。APP中分享功能的开发主要有两种形式: 集成各个分享平台提供的sdk。 常用的社交软件,如微信、微博,都有各自的开放平台,提供各种语言的sdk。使用sdk,我们可以快速的将分享功能加到应用中。 使用分享集成框架。虽然使用sdk开发已经很快了,但是不同的分享平台有不同的特点,一个一个去集成研究还是要花费一定时间。而分享功能在展现形式和交互流程上又有共通性,所以技术上也存在整合的可行性。因此,市场上出现了如友盟等第三方分享平台,开发者只需要加很少的代码,就能集成几乎所有的分享渠道。 既然友盟等已经做的这么好了,为什么还要自己做分享框架呢? 首先,技术上的不可控性。我们依赖友盟,友盟再依赖原生sdk,环节越多,中间的风险就越多。其次,展现上的雷同。用友盟等工具的APP基本上是一样的展现形式,如果你做的只是一款大陆货,那没问题;但想做好,雷同就是首先要避免的。最后,确实有时间做这个。做这个东西,集成了微信、微博、短信、邮件,总共花了三天。
背景和目标目前市场上的大部分App都有网络功能,而网络功能大部分都是基于HTTP协议的。HTTP协议简单而又强大,这也是该协议长盛不衰的秘诀之一。每一个程序员都最好了解一下HTTP协议,这会让你受益匪浅。 协议规范(英) 协议规范(中) 回到iOS,我们将如何使用HTTP协议来完成网络请求呢?从头开始开发一个协议栈是重复造轮子,非常不明智。因为苹果的开发框架中已经包含了对HTTP协议的封装。请看官方文档说明
不良实践的根源 项目时间紧,没有时间去思考更好的写法 认为花精力去优化代码结构不值得 第一种原因,一般是因为经验不足,通过学习,任何人都可以很本能的写出结构良好的代码。至于时间确实很紧,后面总会重构的时间。 第二种原因,我觉得要分项目看。如果只是第一个试水版本,没有问题。但是作为一个长久项目,千万不能抱有这种观点。不仅害己,更是害人。 最近做了一个项目,由于种种原因,我们的代码有很多问题。因为正在做重构,所以就把一些不良的实践总结出来。希望对大家有所帮助。
参考 上面的文章写得已经非常全面了,不过还是有些东西需要补充一下。 循环引用循环引用和ARC没有直接关系,但是在转换的过程中遇到了相关问题,所以就着重说明一下。 循环引用的原因任何一种语言,都必须有它的内存管理方式。比如C语言中,我们用malloc申请一块内存,放入数据。当这块内存不在需要时,就调用free将其释放掉。这是一种比较原始的方式,当同一块内存在多个地方被用到时,到底应该由谁来释放呢?你只能小心翼翼的处理这种问题,除此之外没有别的办法。
做技术分成好几个层次: 第一层:把功能做出来,不用考虑代码质量。 第二层:把功能做稳定,不会有太多的bug。 第三层:把功能做得快,能够快速响应需求。 如果是从零开始做项目,迫于经验不足和时间紧迫,都会经历从第一层慢慢向上的过程。遗憾的是,做到第三层是很难的,但不管怎样,追求的过程是充满挑战的,也是受益无穷的。 评价一下我们现在的项目,还应留在第一层。为了能够达到第三层,我和同事们一起想了一些方法和步骤。
结构设计的层次是否越多越好?多人都会说,凡事不能走极端,走了极端就过犹不及。所以应该分层,但不能过分分层,应该视具体情况来定。这样的话听起来很有道理,却只是一句废话。当我们遇到问题时,还是摸不着头脑! 看看知名的架构师是怎么说的吧!来自蔡学镛 我做(开发)架构的几个原则,根据优先次序高低排列:1. (逻辑)拆分越细越好 2. 依赖关细越少越好 3. 交互越少越好 … 相互矛盾时,如果没有特殊理由,以优先权高者胜出。 由此启发,我觉得设计架构应该拆的越细越好。这样做有如下几点好处: 对于大中型软件,层次越多,每一层就更单纯,更容易维护。 团队成员只需了解一小部分业务,就能顺利进行开发。 相对底层的模块,可以更好的重用。 层次分的越多,开发者对抽象的理解就更深入。 iOS说到分层,有几种常见的做法。 按功能分:有MVC,MVVM…… 按层次分:有数据层、逻辑层、展现层……
为什么要有代码规范?对于团队,如果代码风格不统一,阅读或修改同事的代码会非常困难,造成潜在的风险。 对于个人,代码规范是对自身编码习惯的一种监督,如果没有这种监督,有时候因为偷懒,会写出难看的代码,时间长了自己都看不懂。这样对于代码的维护性是不利的。 代码规范的内容?代码规范包含的范围十分广泛。从一个变量的命名到一个类的设计,我觉得都属于代码规范的范畴。从实践的角度,可以把代码规范分成两个部分: 第一部分是规则,即一定要这么做。这里面没有对错,但需要统一。包含变量的命名、函数的命名、模块的组织、代码块的组织、宏、枚举、常量的声明、函数的粒度。 第二部分是风格,即一种模式化的代码设计结构。我们实现某个功能时,往往不止一种实现方式。每一种实现方式没有绝对的高低之分,不同角度的解读,就会有不同的偏好。所以这个层面上的代码规范,只能求同存异。但是不管怎样,每个人必须要有一致性的风格。就像不同的小区可以有不同的风格,但同一个小区只能有一种设计风格。风格包含代码设计中的抽象概念,比如接口、继承等等。