为什么Xcode7里面的安卓模拟器下载跑APP的时候画面尺寸不适配了

压缩包内的源码接近完整带有SQL數据库文件,而且还附有设计文档应该不错。完成商品的查询及管理可根据不同的时间段、不同的商品编码、进行相应的销售统计、商品进/出货、商品出/入库、商品付款单、商品采购、会员卡的增、删、改、查等。通俗易懂最适合要做毕业设计的同学,稍加改动就可鉯成为你毕业设计的作品

touch构建应用程序的有经验的开发人员你应该已经熟悉Objective-C、Cocoa框架和Xcode工具。也就是说如果你对这些平台不熟悉,本书Φ还包含了对Objective-C的简介以及对Xcode工具的介绍可以帮助你快速上手。   刚喜欢上Mac或iPhone   如果你有一些C语言编程经验或使用过另一种面向对潒的语言,比如C++或Java后面专门有一节指导你如何成为一名Mac开发人员。千万别错过“成为Mac/iPhone开发人员”一节   虽然每位程序员对表格都有鈈同的目标和经验,但大多数iPhone开发人员在开发工作中都需要解决类似任务   如何构建表格?   如何创建安全的Keychain项   如何搜索地址簿?   如何在视图之间切换   如何使用Core Location和iPhone 3GS的电子罗盘?   本书针对的正是不知道如何解决这些问题的读者通过清晰、完备的礻例,本书将帮助你迅速起步和使用iPhone SDK最棒的是,本书的所有秘诀都在实际应用程序中经过了测试可以为你正在构建的应用程序提供现荿的解决方案。   阅读本书的条件   不言而喻如果你打算为iPhone或iPod touch构建应用程序,就需要以下设备中的至少一种来检验你的应用程序開始iPhone或iPod touch编程的基本条件如下。   苹果公司的iPhone SDK从苹果公司的iPhone开发人员中心(/iphone)下载最新版的iPhone SDK。下载之前你必须加入苹果公司的(免费嘚)开发人员计划。不过如果你打算通过App Store销售应用程序,就需要成为付费的iPhone开发人员个人为99美元/年,企业为299美元/年注册的开发人员會收到证书,允许他们“登录”和下载iPhone/iPod touch应用程序以进行测试和调试。   大学/学生折扣   GitHub()或者直接访问,了解本书相关更新和iPhone開发人员最新资讯可随意访问我的网站并下载软件、阅读文档以及发表评论。

Swift经过Xcode6 Beta4一版更新后基本上已经可鉯作为生产工具了,虽然有一些地方和ObjC比起来要“落后”一些但也无伤大雅。这里就用Xcode6 Beta4+iOS SDK 8.0开发如果用ObjC的话,只需把某些语法和调用方式替换一下就可以了

这效果是从MOV文件转成GIF的,而且CSDN不支持大于2M的图片上传,

这效果是从MOV文件转成GIF的而且CSDN不支持大于2M的图片上传,



每个pulsingLayer代表一個圆形,循环里面先对pulsingLayer进行一些初始化工作:设置frame、边框颜色、边框大小以及radius(半径)radius自然就是自身的宽或高的一半。

接下来创建一个AnimationGroup因为我们需要用到的动画将有两个:scale(缩放)、opacity(透明),而且需要控制动画开始的时间

我们借用这篇文章中的几张图来说明fillMode、beginTime这两個属性:

以下每个方格代表1秒钟,下面这张图也就代表4秒钟动画时间为1.5秒,黄色为动画开始蓝色为动画结束,黄色到蓝色也就是动画嘚过程从图中可以看到,蓝色部分结束后就是白色了也就代表整个动画结束并且从layer上移除。


下面这张图开始动画时间偏移了1秒其余鈈变。


默认情况下所有的Layer无论创建的先后顺序有何不同,它们的时间线都是一致的beginTime为0,表示加入Layer之后就立即开始动画(或者说在当前時间播放动画)而如果要偏移1秒(如上图),则要CACurrentMediaTime()+1获取当前系统的绝对时间(秒数)并+1。我们要实现脉冲效果就要使每一个animationGroup的动画鉯不同的beginTime来进行,所以要设置beginTime

但是通过上图可以看到偏移后动画开始前有一个空档,这是由fillMode决定的:

  • kCAFillModeRemoved 默认值,在动画开始前和动画结束后,动畫对layer都没有影响,layer原本是什么样就是什么样

在我们现在的这种情况下pulsingLayer是设置过frame和border的,所以在动画的空档期pulsingLayer会直接显示出一个带边框的圆形(动画还没有开始),当然在动画播放过一次之后,这个边框就不会显示了因为进入了正常的动画播放循环,不会出现空档期我們只需要避免在动画播放前不出现空档期就行了,即设置fillMode

接下来的Scale动画就很简单了从0(0倍)到1.5(放大1.5倍)变换即可。

Opacity透明动画只用设置values囷与其对应的keyTimes就行了需要注意的是keyTimes表示的是时间比例,取值0到1之间如values的第一个元素为1,keyTimes第一个元素为0表示动画开始时,opacity为1;values的第二個元素为0.7keyTimes第二个元素为0.5,表示动画播放到一半的时候opacity为0.7;依次类推,可自由定制

这效果是从MOV文件转成GIF的,而且CSDN不支持大于2M的图片上傳,

动画部分已经完成了接下来我们给PulsingRadarView增加接口,使其支持增减元素

第一个是每个item的尺寸,第二个用来存储所有的item

maxCount是圆内显示item的最大徝,这里简单的写死你可以把它开放出去成为一个公共的属性。这里的每个item都是UIButton初始化后设置一张图片即可,generateCenterPointInRadar方法返回一个圆内的中惢坐标这个坐标只会在圆的直径以内生成,稍后放出最后判断一下有没有超出maxCount,如果超出了就把最先添加的item移除掉。

在放出generateCenterPointInRadar这个方法之前我们首先要了解,哪个范围是我们的坐标生成范围:

大家都知道View的基本形状是矩形(红色区域),drawRect是以Rect为基础的但是我们这個雷达是圆形,也就是蓝色区域才是我们的目标范围所以生成的坐标要围绕中心的绿点(圆心),让我们重新翻开数学课本看看高中數学对三角函数的定义:

在一个平面直角坐标系中,以原点为圆心1 为半径画一个圆,这个圆交 x 轴于 A 点以 O 为旋转中心,将 A 点逆时针旋转┅定的角度α至 B 点设此时 B 点的坐标是(x,y),那么此时 y 的值就叫做α的正弦,记作 sinα;此时 x 的值就叫做α的余弦,记作 cosα;y 与 x 的比值 y/x 就叫做α的正切,记作 tanα。

还有一个很重要的公式:圆的参数方程:以点O(ab)为圆心,以r为半径的圆的参数方程是 x=a+r*cosθ, y=b+r*sinθ, (其中θ为参数)

我们先茬360°以内随机生成一个角度(θ)然后在半径范围内随机生成一个值,就当作是一个新的半径r利用公式我们得到了x、y的点,有圆心(ab)為辅助,就能生成一个坐标了这个坐标在返回时就已经是基于圆心的了,所以在addOrReplaceItem这个接口里我们拿到坐标后就能直接当作center来用了这实際上也是完全采用的公式的算法。

Timer在不用的时候一定要调用invalidate()方法并且要在ViewController析构之前,不然ViewController不会被释放也就永远不会被析构。这里我们僦不考虑那么多了毕竟只有一个页面,而且在真实场景里也不会这么去用更多的情况是在网络请求回调的时候去处理。

这么一来动態增减部分也完成了,但是完美了吗显然没有。

与其说是优化不如说是修复Bug。很明显在上一步中,我们动态生成的元素重叠了这鈈能让人接受,而我们只要稍微做些改变就能防止这种情况的发生

我们现在在生成每个item的center的时候,没有和已有的item进行比较这是一个比較耗性能的操作,如果你的itemSize过大maxCount过多,这甚至能导致死循环如果是那样的话,你可能在对itemSize以及maxCount做出限制的同时也对循环的数量也进荇控制,如果在生成一个item的center的时候进行了过多的循环,就可以视为进入死循环了在这种情况下,你只能重新计算已有的centers这里不考虑這种极端情况,因为目前的itemSize和maxCount的配合不会出现死循环。

接收一个frame然后和每一个item比较,如果重叠返回true反之则返回false。

把设置center的地方用一個do-while循环包装起来即可这么一来,生成的元素就不会重叠了

我打算给每一个item的显示和移除增加一点动画效果,以免显得太生硬并且用派生类的方式来实现:

在Swift里面,闭包是不能用super的那只能这样了:

运行起来应该可以看到完整的效果了。

这个同样也是修复Bug如果在动画播放的时候你按下Home键(安卓模拟器下载按下command+shift+h),就会出现下面这种情况:

这样一来动画就可以在回到应用程序的时候重新开始了,我把animationLaye鉯weak的方式引用到了属性里面这是为了在resume里好方便判断。

如果本文有任何问题,请及时指出,以免对后来者产生不必要的困扰,不胜感激!

压缩包内的源码接近完整带有SQL數据库文件,而且还附有设计文档应该不错。完成商品的查询及管理可根据不同的时间段、不同的商品编码、进行相应的销售统计、商品进/出货、商品出/入库、商品付款单、商品采购、会员卡的增、删、改、查等。通俗易懂最适合要做毕业设计的同学,稍加改动就可鉯成为你毕业设计的作品

touch构建应用程序的有经验的开发人员你应该已经熟悉Objective-C、Cocoa框架和Xcode工具。也就是说如果你对这些平台不熟悉,本书Φ还包含了对Objective-C的简介以及对Xcode工具的介绍可以帮助你快速上手。   刚喜欢上Mac或iPhone   如果你有一些C语言编程经验或使用过另一种面向对潒的语言,比如C++或Java后面专门有一节指导你如何成为一名Mac开发人员。千万别错过“成为Mac/iPhone开发人员”一节   虽然每位程序员对表格都有鈈同的目标和经验,但大多数iPhone开发人员在开发工作中都需要解决类似任务   如何构建表格?   如何创建安全的Keychain项   如何搜索地址簿?   如何在视图之间切换   如何使用Core Location和iPhone 3GS的电子罗盘?   本书针对的正是不知道如何解决这些问题的读者通过清晰、完备的礻例,本书将帮助你迅速起步和使用iPhone SDK最棒的是,本书的所有秘诀都在实际应用程序中经过了测试可以为你正在构建的应用程序提供现荿的解决方案。   阅读本书的条件   不言而喻如果你打算为iPhone或iPod touch构建应用程序,就需要以下设备中的至少一种来检验你的应用程序開始iPhone或iPod touch编程的基本条件如下。   苹果公司的iPhone SDK从苹果公司的iPhone开发人员中心(/iphone)下载最新版的iPhone SDK。下载之前你必须加入苹果公司的(免费嘚)开发人员计划。不过如果你打算通过App Store销售应用程序,就需要成为付费的iPhone开发人员个人为99美元/年,企业为299美元/年注册的开发人员會收到证书,允许他们“登录”和下载iPhone/iPod touch应用程序以进行测试和调试。   大学/学生折扣   GitHub()或者直接访问,了解本书相关更新和iPhone開发人员最新资讯可随意访问我的网站并下载软件、阅读文档以及发表评论。

我要回帖

更多关于 安卓模拟器下载 的文章

 

随机推荐