谁有ios animationsios 6 by tutorialss这本书

iOS Animations by Tutorials (01) - 简书
iOS Animations by Tutorials (01)
Chapter 1: Getting Started with View Animations
Your first animation
打开这章节的starter project 运行,非常简单的一个登录界面,一个标题,两个textfield,一个登录按钮,一张背景图,还有四朵云。
ViewController.swift初始工程已经把界面元素链接到代码里,而且在viewDidLoad里初始化了一个indicator(小菊花),一个imageView(用来显示登录状态之类的),还有一个label(呈现状态内容)
first task
给标题和两个textField添加动画首先要做的是把他们移到屏幕外面,在viewWillAppear()添加
heading.center.x -= view.bounds.width
username.center.x -= view.bounds.width
password.center.x -= view.bounds.width
之后添加动画让他们回到之前的位置在viewDidAppear()中
UIView.animateWithDuration(0.5, animations: {
self.heading.center.x += self.view.bounds.width
一个animateWithDuration方法可以使多个view进行动画 ,但他们是同时发生的,怎么使不同view之间有个先后顺序?delay属性可以对动画触发进行延时,将不同的view写在不同的animateWithDuration方法中,并设置不同的delay值,接着上面的方法添加:
UIView.animateWithDuration(0.5, delay: 0.3, options: [], animations: {
self.username.center.x += self.view.bounds.width
}, completion: nil)`
animateWithDuration: 参数说明:
duration:动画持续时间
delay:延迟动画开始时间
options:(见下方)
animations:在闭包中对view属性进行修改(可修改的view属性见下方),形成动画“动作”
completion:动画结束后的操作
Animatable properties
Position and size
这几个属性可以用来修改view的位置和大小动画
Appearance
颜色和透明度渐变
backgroundColor
Transformation
旋转,拉伸动画等等
Animation options
Repeating:重复循环动画动作(当动作结束的时候会从初始位置重新执行动画动作)
Autoreverse:把动画动作倒回去,和repeating一起使用会从初始位置到结束位置再到初始位置不断循环,like**运动)
UIView.animateWithDuration(0.5, delay: 0.4, options:[.Repeat,.Autoreverse], animations: {
self.password.center.x += self.view.bounds.width
}, completion: nil)
Animation easing
CurveLinear:消除默认的开始加速和结束减速效果
CurveEaseIn:开始阶段加速效果
CurveEaseOut:结束阶段减速的效果
CurveEaseInOut:综合前面两个属性,在开始阶段会有加速,结束阶段会减速(默认属性)
UIView.animateWithDuration(0.5, delay: 0.4, options:[.Repeat,.Autoreverse,.CurveEaseOut], animations: {
self.password.center.x += self.view.bounds.width
}, completion: nil)
Challenges
ViewController有四个outlet:
cloud1,cloud2,cloud3,cloud4,给这四个view添加渐变动画。
1、在viewWillAppear()里设置四朵云alpha属性为0.0.2、viewDidAppear()里添加animateWithDuration(...)恢复四朵云alpha值为1,delay分别设为0.5,0.7,0.9,1.17694人阅读
Xcode(15)
iPhone(66)
The book&&7
By Tutorials&is for&intermediate&or
advanced&iOS
developers, who already know the basics of&&but want to upgrade their skills to iOS 7. Learn the new iOS 7&&Quickly
and Easily!
iOS 7 is one of the most massive and exciting set of changes we’ve seen as developers so far. This means tons of great&opportunity&for
you – the type only seen every 3 to 5 years! However, getting a handle on all of this new&&is
a daunting task, especially while trying to update your apps at the same time.
This is where iOS 7 by Tutorials comes to the rescue! In this book, you will be able to learn the new topics in a much quicker and easier way – by following fun and easy-to-read tutorials.
Table of Contents
Section I: Design
Chapter 1: Designing for iOS 7
Chapter 2: UIKit Dynamics and Motion Effects
Chapter 3: Custom View Controller Transitions
Chapter 4: Beginning Text Kit
Chapter 5:&Intermediate&Text Kit
Chapter 6: Transitioning to iOS 7‐Quick Start
Chapter 7: Transitioning to iOS 7‐What’s New with Auto Layout
Chapter 8: Transitioning to iOS 7‐Advanced Topics
Section II: What’s New in Xcode 5
Chapter 9: What’s New in Xcode 5
Chapter 10: What’s New in Objective-C and Foundation
Chapter 11: Unit Testing in Xcode 5
Chapter 12: Beginning Source Control in Xcode 5
Chapter 13:&Intermediate&Source Control in Xcode 5
Chapter 14: Beginning Continous Integration in Xcode 5
Chapter 15:&Intermediate&Continuous Integration in Xcode 5
Section III: Major New Features
Chapter 16: Networking with NSURLSession
Chapter 17: Beginning Multitasking
Chapter 18:&Intermediate&Multitasking
Chapter 19:&JavaScript&Core
Chapter 20: Airdrop
Chapter 21: Peer-to-Peer Connectivity
Section IV: Minor New Features
Chapter 22: What’s New in AV Foundation
Chapter 23: What’s New in MapKit
Chapter 24: What’s New in CoreLocation
Section V:&Bonus&Chapters
Chapter 25: Beginning Inter-App Audio
Chapter 26:&Intermediate&Inter-App Audio
Chapter 27: What’s New in PassKit,&Part
Chapter 28: What’s New in PassKit, Part 2
Chapter 29: Introduction to iAd
Book Details
Title: iOS 7 By Tutorials
Author:&Cesare Rocchi,&Charlie Fulton,&Chris
Wagner,&Christine Abernathy,&Colin
Eberhardt,&Felipe Laso Marsetti,&Greg
Heo,&Jeremy Olson,&Marin
Todorov,&Matt Galloway,&Matthijs
Hollemans,&Pietro Rea,&Soheil
Moayedi Azarpour
Length:&804&pages
Edition:&1
Language:&English
Publisher:&Razeware LLC
Publication Date:&
ISBN-13:&9
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:754353次
积分:4963
积分:4963
排名:第4511名
原创:40篇
转载:54篇
评论:72条
(1)(1)(1)(4)(1)(1)(3)(1)(1)(2)(9)(4)(2)(1)(1)(7)(2)(2)(4)(3)(2)(1)(2)(2)(2)(1)(3)(4)(3)(5)(3)(5)(12)我是如何自学IOS的(IOS自学资料推荐) - 简书
我是如何自学IOS的(IOS自学资料推荐)
有个同事问我是如何学习IOS的,做产品的不一定会代码啊~嗯啊,是的,不需要会,但是会的话,可以和程序员更好的沟通,最起码我们都能听懂同一种语言了。那我来推荐一下相关资料吧~之前有过编程经验的人就不要看我的这个文章啦,如果你不知道字符串是什么?那太好了,你可以来看看我的文章,说不定还能少走点弯路~我比较喜欢多纬度组合手中的资料,这样我能多个角度看我的资源~嗯嗯,资源还是比较重要的~所以在介绍某个资料的时候,会按照纬度来标注。
第一纬度:按照难度系数来归类我的资料和学习路径;
第二纬度:按照资料的属性或者来源来归类
第三纬度:按照资料与资料之间的关联关系来归类
A.麦子学院课程特点:现在不免费了,后来收费之后就没有看了,因为当时已经买了RayWenderlich和Udemy上的教程了,还没有学完,所以就没在花钱投资到麦子学院。麦子学院就一个好处,中文的,看不懂英文又想学编程,估计只能来类似的网校了。有层次阶段性,当我们注册登录之后,选择了IOS课程之后,麦子学院出展现4个阶段的课程,按照他的要求一点一点学习即可。这个我会写一个专门的文章来点评麦子学院的课程以及我的学习路线~
难度系数:从易到难一次递进,各个阶段的课程都有。
来源+属性:麦子学院。视频。
与其他学习资料的关联:和苹果官方开发者中的资料关联较多,尤其是Sundy老师讲解的课程,来源于苹果的官网,权威资料。
B.赵哲的系列课程(弃了)好一阵没有更新内容,弃了。学程序还是需要花钱买书买教程的,免费的更新算是自己的福气,可是没有给老师带来什么好处。课程很容易完结不了。当初我是在优酷上看的,也可以下载到本地。关注赵哲的微信公众号或者微博能获得相关资料,直接在百度云盘下载可免去优酷的各种广告。赵哲的课程有快速版本,翻译的是苹果官网的视频,但是也加入了自己的理解,所以有编程基础且英文又不咋地的人适合看他的A系列高速课程。
难度系数:高速课程难度系数高+低速课程难度系数低
来源+属性:开发者大会视频翻译+自己的编制和录制的课程
与其他学习资料的关联:开发者大会视频
C.原来C项内容现已经不再推荐了。英语没问题的直接买E-6的书籍吧。D.apple官网推荐读物估计刚刚开始学习的人可能看不惯苹果官网的文档,如果你不习惯,先跳过D类,直接去看E类,在E下,介绍了不少比较好的书籍,能帮助你少走弯路,不过E里面的书籍都是英文版本的,毕竟程序这玩意是外国人发明的,当然了,你在编程的时候,还是需要用英文的。对于这一点,我也没有办法,要么硬着头皮看英文书籍,要么就只能看过国内的一些教程了。不过很多人告诉我,想成为iOS高级程序员,必须能够看懂苹果官方的文档,不然,真的麻烦。D-1.马上着手开发IOS应用程序(Start Developing IOS Apps Today)这本书是入门级别的,这也是苹果开发者官网里,那么多的guidelines/Reference中,唯一的一本中文。也说明这个文档的重要。麦子学院的Sundy老师也推荐过这本书,在学习UI前,看一下这本书,对理解IOS编程有帮助。如果你是资深程序员,当看杂志看看这本书吧,花不了太多时间。对于没有编程基础的人来说,这本书就是一个“三字经”级别的入门书籍。用OC写的。但是道理没有变。讲述的内容实际上就是麦子学院的“IOS开发快速入门”,Sundy老师用swift讲解了这个指南。
苹果官方文档结构图
苹果官方文档结构图英文
当你看完了《Start Developing iOS Apps Today》文档后,还需要看什么呢?上面的图是苹果官方的建议,需要看的文档大约分为图中的8大类(D1-D10)。D-2.App Distribution Guide Register/注册:注册成为开发者《App Distribution Guide 》(应用程序分发指南)中的“Managing Accounts”(管理帐户)这一章节会带您逐步完成注册为Apple开发者的过程。D-3.iOS Human Interface Guidelines
Interface/界面:学习设计美观的应用程序界面。《iOS Human Interface Guidelines》(iOS用户界面指南)会指导您如何让应用程序符合iOS用户界面规范。D-4.Auto Layout Guide
《Auto Layout Guide》(自动布局指南)会指导您如何让你的界面能够自动布局,适应多个尺寸的apple设备。D-5.The Swift Programming LanguageLanguage/语言:学习语言《The Swift Programming Language》(Swift编程语言)描述了如何使用Swift程序设计语言定义类、发送消息、封装数据,以及完成各种其他任务。如果想用swift编程,这个必须掌握,苹果写了将近五百多页,非常不错。D-6.App Programming Guide for iOS
Develop/开发:学习开发优秀的应用程序《App Programming Guide for iOS》(iOS应用程序编程指南)讲解了在开发iOS应用程序时,您必须要了解并做到的基本事项。D-7.
Swift Standard Library Reference这个是swift的参考指南(可以理解为公式表)如果说D-5 The Swift Programming Language是数学课本,那么D-6 Swift Standard Library Reference就是去考试时必带的公式表了。是D-5的浓缩,如果哪个知识点忘记了,也是一个快速查询的参考。当然了,更详细的解释还是要看D-5。这两本书的关系就是一个是课本,一个是只是重点。D-8.iOS Technology Overview
Technologies/技术:了解可用的技术《iOS Technology Overview》(iOS技术概述)介绍了可以在iOS应用程序中使用的框架和其他技术。D-9.Start Developing iOS Apps Today
Documentation/文稿:浏览文档《Start Developing iOS Apps Today》中的“查找信息(第109页)”这一章节讲解了如何充分利用所提供的文档。D-10.Xcode Overview
Test/Debug / 测试/调试:调试并测试您的应用程序《XcodeOverview》(Xcode概述)中的“DebugYourApp”(“调试您的应用程序”)会教您如何在Xcode中彻底调试和测试应用程序。D-11.AppDistributionGuide
Ship/交付发布:发布应用程序。《AppDistributionGuide》(应用程序分发指南)会带您逐步完成这些过程:预备测试设备,提交应用程序到App Store。E.其他的学习书籍(英文)
E-1. Introducing IOS 8: swift programming from idea to app store
这本书是为纯粹的初学者设计的,为进入IOS编程世界提供个人指导。去掉了复杂的术语,用生活中相关的实际例子取而代之,本书用一些常见的场景,例如去杂货店,开车,在餐厅里吃饭,来教授编程知识。每章节都会用清晰简明地讲解概念。这本书的目标是讲解的内容从最初的概念一直到如何发布应用到ihpone的应用市场(APP store),你将会学到基本的编程知识概念,开发APP的步骤和过程,以及如何将APP发布到APP市场,无需编程经验即可阅读此书。You will learn to think differently and see the world from a new perspective.(你将学会如何从不同的角度思考,从一个新的角度来看世界。)这本书将给你一个工具来改变你和其他人的生活。别担心别害怕,这本书已经去掉了可怕的复杂编程术语了。英文版,目前我在翻译其中一部分的内容,感兴趣的可以订阅我的翻译专题:很郁闷,还没有更新到iOS 9(这天),后面的大部分书籍都更新了, 就这本书没有更新。唉,可能是没有市场,所以不再出版了?早知道翻译Raywenderlich网站上的书籍了。E-2.Programming iOS 9 Dive Deep into Views, View Controllers, and Frameworks
已经更新到iOS 8和swift2.0了。看完E-1后可以接着看这本书,这本书比E-1更多的讲解了视图、视图控制器以及框架的知识,英文版的。E-3.
Core Data by Tutorials
本书适合已经有swift和iOS基础的人看,如果你了解iOS和swift的知识,然后又想了解iOS一些Core Data的知识,可以看看这边书~本书用swift2.0写成,适配了iOS9。Core Data是苹果公司提供的数据库。
如果你也会swift了,也学会各种控件了,那还需要学习什么呢?当然是数据库了,苹果官方提供的数据库是Core Data。麦子学院的老师在讲解数据库的时候说过这个Core Data,分上和下两节课介绍的。当时老师表达了这么个意思:Core Data呢我大体一说就行了,要是想全部说完,那就是一本书了(潜台词:太多了,讲不完了,所以用两节视频讲解一下就OK了)。E-3这本书是讲解如何用swift使用苹果官方数据库CORE DATA。 《小波说雨燕第五季 Core Data实战》的教学视频里,使用的就是这本书~不过是去年的版本,那时候这个最新版本还没有发布呢。E-4. iOS 9 Swift Programming Cookbook Solutions & Examples for iOS
这本书主要是讲解IOS一些中高级的功能和一些拓展。对于想提供自己IOS开发能力的人来说,这是一个比较好的书籍。 不过这个一看就是国内技术牛人写的,几乎不用xcode里的storyboard,全部是代码实现的效果。。。这对我来说绝对是灾难,我离不开storyboard。 不过我看这本书也只是关注书中介绍Core Data章节,其他章节我还没有学到那么深入。E-5.
iOS 8 by Tutorials:Learning the New iOS 8 APIs with Swift
介绍iOS 8出现了哪些新的技术,建议也看一下。毕竟当时的新技术在现在来说,已经广泛应用了。<网站出品的,这个网站的教学视频是棒棒哒,目前是英文视频。说不定以后有中文字幕啥的。这是去年介绍iOS8的书籍,今年介绍iOS9的书籍也出版了,见E-11。E-6.
iOS Apprentice 1 Getting Started v4.1
这本书是iOS Apprentice系列的第一本书籍,适合完全一点编程知识都没有的人。实战型学习利器,如果你不想先学swift一大堆的理论知识,或者这些理论知识已经让你头晕脑胀了,这时看这本书就是最佳选择了。Raywenderlich出品,良心佳作,不看后悔。适合初学者的书籍。E-7.iOS Apprentice 2 Checklists v4.1
这本书是iOS Apprentice系列的第二本书籍,比上一本书增加了更多的知识。变练习边讲解知识,这种教学方式在我看来是最好的,边学边做能够更快的学会编程。目前最新版本已经更新到了iOS9和swift2.0了。E-8.iOS Apprentice 3 MyLocations v4.1
这本书是iOS Apprentice系列的第三本书籍,按照顺序依次来学习即可,不过iOS Apprentice系列目前没有中文译本,有英语基础的人硬着头皮来看,也能看个大概的,不要有心理压力。E-9.iOS Apprentice 4 StoreSearch v4.1
这本书是iOS Apprentice系列的第四本也是最后一本,里面的知识会稍微难一些了,对swift中的知识点运用也复杂了许多,在这本书中,协议之类的中级知识随处可见,这本书里介绍的不少知识点可以在很多App中找到影子。E-10.Swift Apprentice v1.1
这本书已经升级到swift2.0了,主要是讲解swift知识的,其实也可以看苹果官方的swift文档,不过这个还是更有意思一些,作者举了不少例子,有自己的理解,能帮助我们理解的更快一下。E-11.iOS 9 by Tutorials v1.0
介绍iOS 9的一些新特性,适合已经会swift编程的人看,主要是看一下iOS 9新特性如何具体应用,能达到哪些效果,注意事项等等,同样的参考资料是苹果官方的视频和文档,但是我更愿意看这个,真的很不错。E-12.iOS Animations by Tutorials v2.0
这本书适合已经有swift和iOS基础的人看,如果你了解iOS和swift的知识,然后又想了解iOS一些动作动画知识,可以看看这边书~本书用swift2.0写成,适配了iOS9。E-13.
watchOS 2 by Tutorials v1.1
这本书是介绍苹果手表watchOS 2的知识,已经升级到了swift2.0,适合有编程基础的人来看,如果还不懂swift,建议还是先学习swift。对开发苹果手表App感兴趣的人可以看看这本书。E-14.2D iOS and tvOS Games by Tutorials v1.0
这本书只要是介绍游戏App编程知识,以及苹果电视的tvOS App开发知识。如果专门开发游戏,或者开发电视App,可以参考这本书籍。F.Stanford课程:Developing IOS8 Apps with Swift
网易公开课
哈哈,这个白胡子教授一直在斯坦福教授开发IOS APP的课程,当年还有Objective-C编程的时候,他就在教。当苹果推出了swift后,他的课程立即就使用了swift,国外的课程是多么接地气与时俱进接近现实啊!国内的那些课程,学了之后毕业都用不上,坑爹。斯坦福的学生也好幸福的~ 目前中文字幕已经全部翻译完毕。itunes上也有,可以订阅。 貌似斯坦福的这个课程还在iOS 8上对吗,有iOS 9了吗?G.Raywenderlich网站上的教学视频
网站视频列表(那天的)
当时我注册的时候,需要翻墙,因为注册验证码使用了谷歌的服务,所以刷不出验证码来,不知道现在是什么情况了。但是一旦完成注册后,就可以看视频网页了,这个网站没有被墙的。我在上面看视频速度也非常满意。只是视频需要每个月19美元,而且只有英文字幕,有几个视频还没有英文字幕。不过你会从非常多的文章中发现,好多人推荐这个网站的。网站上的文章是不收费的,视频每月19美元,然后要是想下载初版的书籍,还需要另外花钱买。国外的书籍价格乘以6或者7之后,就贵了。你想想看,在北京坐地铁,去了最远的地方,然后一去一回就20元没有了,如果乘以6,120元去北京某个地方,你就觉得贵了。目前就是这些了,如果有什么新发现,随时更新这个文章。 发布这篇文章到,其中的书籍版本号都换了一轮了,时间过的真快。。最近这个阶段,我只在Raywenderlich网站上看视频,看他们家的书籍,其他的资源,也都不关注了。所以文章中某个资源有变化更新的,请给我留言哦~iOS9-by-Tutorials-学习笔记四:APP-瘦身
iOS9-by-Tutorials-学习笔记四:APP-瘦身
这篇文章在书中的标题是App Thinning,这里我给翻译成了App 瘦身。
本文然然进行了一些语法的修改,很开心她为我修改这些东西。她说我转折只会用但是,被她这么一说想想还真是只是会用但是,嘿嘿。
iPhone经过这几年的发展,已经发生了很大的变化,例如屏幕变得更加多样,尺寸更多,内存变得更大,CPU的架构也在变化。伴随着iPhone的变化,iOS也在变化,例如AutoLayout、size classes、split view controller等。这些技术及设备的变化给我在开发的过程中也造成了许多的问题,不仅如此苹果通过不断推出新的技术,努力在帮助我们使用同一套代码开发适应多个设备的Universal的App。另一方面Universal App虽然在开发的过程中,方便了我们开发人员,可是对于用户来说就不那么友好了,由于需要适配多种设备,所以里包含所有设备的代码,但真正的在运行的时候,我们并不需要那么多相关的代码及资源。
例如下面的一张图,是一个App运行在iPhone 6+上,使用的各个资源相关的情况:
上图中对勾标出来的是在iPhone 6+上真实运行的时候使用到的相关的资源及代码,对比有对勾的部分,更多的是没有被对勾标出来的部分。可以想象我们下载了一个App(前提这个App是Universal的),然后至少一半的代码及资源是我们不需要的,白白占用着我们的空间。这样对用户体验也不好。为了解决这个问题苹果在iOS 9给出了新的解决方案:
App Slicing 当你提交你的iOS 9 打包文件到App Store的时候,苹果编译你的资源和可执行文件,然后为每个设备生成一个特定的可执行文件。最终,设备只会下载适应与其特性的,并且它使用到的内容。这些特性包含显卡性能(原文单词:graphics capabilities)、内存级别、CPU架构、size classes、屏幕 scaling等。 On Demand Resouces 应用程序的资源只有在需要使用的时候才会下载,并且如果其他资源需要空间这些资源可以被移除。 Bitcode 在你提交App到App StZ喎"/kf/ware/vc/" target="_blank" class="keylink">vcmW1xMqxuvKjrEJpdGNvZGW/ydLU1/fOqtbQvOSy+s7v0rvG8Mzhvbuho7D8uqxiaXRjb2RlxeTWw7XEs8zQ8r2ru+HU2kFwcCBzdG9yZcnPsbux4NLrus3BtL3ToaNiaXRjb2Rl1MrQ7ca7ufvU2rrzxtrW2NDC08W7r87Sw8ezzNDytcS2/r341sbOxLz+o6y2+LK70OjSqs7Sw8fW2NDCzOG9u9K7uPbQwrXEsOaxvrW9QXBwIHN0b3Jlyc+how0KPHA+1eLI/bj2vLzK9bzTxvDAtKOszbPSu7PGzqpBcHAgVGhpbm5pbmehozwvcD4NCjxoMyBpZD0="getting-started">Getting started
打开本章节的初始项目,然后选在iPad Air 2运行,这时候运行效果如下:
伴随着模拟器启动起来的还打开了一个Finder窗口:
这个Finder窗口能够打开,是因为在程序中添加了一个脚本,每次运行的时候都会执行,脚本所在地方如下:
echo &App Size in KB:
`du -sk \&${CONFIGURATION_BUILD_DIR}/${EXECUTABLE_NAME}.app\&`&
if [ &${CONFIGURATION}& = &Debug& ]; then
open ${CONFIGURATION_BUILD_DIR}
在Finder的Old CA Maps点击右键,选择显示包内容,如下:
上图中标注的说明如下:
1. Assets.car是Assets.xcassets被Xcode进行编译后的文件。
2. Old CA Maps是真实运行在设备上的可执行文件。
3. Santa Cruz PNGs 这个是图片文件,但是没有被编译到Assets.car文件中,这是因为它并没有放到Assets.xcassets中,而是放到了工程的顶层文件中。
4. SD_Map.bundle 这个就是地图图片文件,但是将近120MB。
Measuring your work
本章介绍一些App瘦身相关的东西,所以我们必须能够测量App是否减少了。工程里面已经内置了一个脚本(上面代码里面有),能够在build的过程中输出App的大小。查看的位置如下:
Slicing up app slicing
App slicing包含两部分内容:可执行文件分片(Executable slicing)和资源分片(resource slicing)。
Executable slicing 指的是在设备下载App的时候会根据设备的相关信息只是下载对应该设备的相关的可执行文件,并不会包含其他设备及架构的可执行文件,达到App安装包的缩小。并且这个功能并不需要我们做太多,App Store默认支持的。
默认情况下提交到App Store的包是包含所有的内容的,这些都在配置文件里面,App Store会自动创建对应于每个类型的可执行文件。这个在iOS9+上支持。
Being smart with resources
Resource slicing 需要我们一小部分简单的工作就能实现。如果使用Resource slicing,则要保证我们的资源都被Asset Catalogs管理。在Xcode 7中,能够标记资源被使用设备的 Memory 和 Graphics ,如下:
Your first fix
在开始的时候介绍过Santa Cruz PNGs这个文件因为被放到Main bundle中,所以不能被编译进入到Assets.car,进而也不能使用Resource slicing。下面看一下我们怎么修改,使其能够使用:
选择New Image Set后,将新加入的set命名为Santa Cruz,紧接着做如下操作:
纠正一下 上图左边的内容应该是删除,包括在Finder内也应该删除
然后在不同的设备上运行App,最后发现Asset.car文件的大小并不一致。这个是因为在安装的时候,会根据设备安装对应的资源。
Lazily (down)loading content
苹果提供On-Demand Resources技术,简称ODR。ODR允许你将资源存储在苹果的服务器上,然后在你App使用的时候再去下载。NSBundleResourceRequest是处理ODR的类,使用这个类能够通过tag下载对应的资源。images, data, OpenGL shaders, SpriteKit Particles, Watchkit Complications等都可以使用ODR。
下面我们修改代码,实现资源的下载,修改MapChromeViewController.swift对应方法如下:
private func downloadAndDisplayMapOverlay() {
displayOverlayFromBundle(NSBundle.mainBundle())
guard let bundleTitle = mapOverlayData?.bundleTitle else {
let bundleResource = NSBundleResourceRequest(tags: [bundleTitle])
bundleResource.beginAccessingResourcesWithCompletionHandler { [weak self] (error) -& Void in
NSOperationQueue.mainQueue().addOperationWithBlock({ () -& Void in
if error == nil {
self?.displayOverlayFromBundle(bundleResource.bundle)
这时候我们运行代码,可能会在控制台输出错误,这是因为我们对应的bundle并没有tag,我们需要给bundle添加tag:
然后我们重新编译运行我们的程序,然后按照上面的查看编译运行的程序的大小,发现小了许多。对比之前的编译生成的文件,发现运行文件里面不包含bundle了。
如果你的App在App Store上可能这个资源文件下载的很慢。但是在开发的过程中,Xcode会利用本地网络作为服务器,然后在设备上能够下载到,所以在开发的过程中如果电脑关了,那ODR也就不能使用了。
Make it download faster
在我们使用ODR的过程中,如果bundle比较大,可能再下载的过程中就会比较耗时,并且在下载过程中用户不知道,这样用户体验就不好。我们可以再Resource下载的过程中给用户一些提示,修改下面的代码:
// add 为新添加的 ProgressView是程序已经添加上的
private func downloadAndDisplayMapOverlay() {
displayOverlayFromBundle(NSBundle.mainBundle())
guard let bundleTitle = mapOverlayData?.bundleTitle else {
let bundleResource = NSBundleResourceRequest(tags: [bundleTitle])
bundleResource.loadingPriority = NSBundleResourceRequestLoadingPriorityUrgent
loadingProgressView.observedProgress = bundleResource.progress // add
loadingProgressView.hidden = false // add
UIApplication.sharedApplication().networkActivityIndicatorVisible = true // add
bundleResource.beginAccessingResourcesWithCompletionHandler { [weak self] (error) -& Void in
NSOperationQueue.mainQueue().addOperationWithBlock({ () -& Void in
self?.loadingProgressView.hidden = true // add
UIApplication.sharedApplication().networkActivityIndicatorVisible = false // add
if error == nil {
self?.displayOverlayFromBundle(bundleResource.bundle)
如果用户已经下载过某个bundle,下次在使用的时候就不会再去下载了。
虽然添加了ProgressView,在体验是好了一点,但是需要注意测试的时候是使用的本地的网络,所以比较快,但是如果要是提交到App Store上,那可能下载就是比较慢了,如果再配上用户没有WiFi那可能就没法用了,所以我们还需要做其他的一些调整。
使用Initial install tags,我们可以设置哪些bundle会在我们App初始化安装的时候就会被下载。 下面下介绍一下ODR三种下载的时机吧:
* Initial Install Tags 在ipa下载的时候一同下载
* Prefetched Tag Order 在程序下载完成后,下载对应的资源,然后按顺序排列。
* Prefetched Tag Order 按需下载
下面是配置的地方:
Purging content
应用程序在使用的过程中通过ODR下载了对应的bundle,但是有时候我们需要清理一些已经下载过的并且不使用的bundle。在介绍怎么删除之前先看一下怎么查看下载的ODR:
Set a resource to be purged
在MapChromeViewController.swift添加如下代码:
// new add 是新加的代码
var overlayBundleResource: NSBundleResourceRequest? // new add
private func downloadAndDisplayMapOverlay() {
displayOverlayFromBundle(NSBundle.mainBundle())
guard let bundleTitle = mapOverlayData?.bundleTitle else {
let bundleResource = NSBundleResourceRequest(tags: [bundleTitle])
overlayBundleResource = bundleResource // new add
bundleResource.loadingPriority = NSBundleResourceRequestLoadingPriorityUrgent
loadingProgressView.observedProgress = bundleResource.progress // add
loadingProgressView.hidden = false // add
UIApplication.sharedApplication().networkActivityIndicatorVisible = true // add
bundleResource.beginAccessingResourcesWithCompletionHandler { [weak self] (error) -& Void in
NSOperationQueue.mainQueue().addOperationWithBlock({ () -& Void in
self?.loadingProgressView.hidden = true // add
UIApplication.sharedApplication().networkActivityIndicatorVisible = false // add
if error == nil {
self?.displayOverlayFromBundle(bundleResource.bundle)
// new add
override func viewDidDisappear(animated: Bool) {
super.viewDidDisappear(animated)
// 告诉结束了对资源的访问
overlayBundleResource?.endAccessingResources()
上面的代码,我做测试的时候不清楚会在什么时候会删除,我也模拟了内存警告,如果谁清楚,还请告诉我,谢谢。
坚持了好几天中午写完了,这篇笔记,一篇笔记13张截图,好累。
(window.slotbydup=window.slotbydup || []).push({
id: '2467140',
container: s,
size: '1000,90',
display: 'inlay-fix'
(window.slotbydup=window.slotbydup || []).push({
id: '2467141',
container: s,
size: '1000,90',
display: 'inlay-fix'
(window.slotbydup=window.slotbydup || []).push({
id: '2467142',
container: s,
size: '1000,90',
display: 'inlay-fix'
(window.slotbydup=window.slotbydup || []).push({
id: '2467143',
container: s,
size: '1000,90',
display: 'inlay-fix'
(window.slotbydup=window.slotbydup || []).push({
id: '2467148',
container: s,
size: '1000,90',
display: 'inlay-fix'}

我要回帖

更多关于 ios激活bypass.deb 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信