iOS8.1剛發(fā)布不久,盤(pán)古團(tuán)隊(duì)就把iOS8的越獄工具放出來(lái)了,完美支持iPhone6、iPad
站在用戶的角度思考問(wèn)題,與客戶深入溝通,找到溫縣網(wǎng)站設(shè)計(jì)與溫縣網(wǎng)站推廣的解決方案,憑借多年的經(jīng)驗(yàn),讓設(shè)計(jì)與互聯(lián)網(wǎng)技術(shù)結(jié)合,創(chuàng)造個(gè)性化、用戶體驗(yàn)好的作品,建站類型包括:網(wǎng)站設(shè)計(jì)、成都網(wǎng)站建設(shè)、企業(yè)官網(wǎng)、英文網(wǎng)站、手機(jī)端網(wǎng)站、網(wǎng)站推廣、申請(qǐng)域名、虛擬空間、企業(yè)郵箱。業(yè)務(wù)覆蓋溫縣地區(qū)。
Air2等所有支持iOS8系統(tǒng)的蘋(píng)果設(shè)備,包括iphone4S/5/5S/6/6
Plus,iPad
Air/Air2,iPad
mini/2/3,iPod
Touch。iOS8.0-iOS8.x都可以完美越獄。下面我們一起來(lái)看看盤(pán)古越獄
for
iOS8怎么用吧。
盤(pán)古越獄
for
iOS8越獄教程
準(zhǔn)備越獄
1.”設(shè)置”—“iCloud”—關(guān)閉“查找我的iPhone”
2.”設(shè)置”—
”Touch
ID與密碼”—
”關(guān)閉密碼”
開(kāi)始越獄
1
打開(kāi)盤(pán)古越獄工具。
2.
識(shí)別到蘋(píng)果設(shè)備后點(diǎn)擊【開(kāi)始越獄】按鈕。
3.開(kāi)始越獄操作,耐心等待進(jìn)度條走完。
完成越獄
請(qǐng)解鎖蘋(píng)果設(shè)備并按照提示操作,此操作不會(huì)抹掉設(shè)備資料。
解鎖設(shè)備--選擇WiFi(可跳過(guò))--設(shè)置iCloud(可跳過(guò))--設(shè)置找查我的iPhone(可跳過(guò))--設(shè)置iTouch
ID與密碼(可跳過(guò))--開(kāi)始使用
問(wèn)題答疑
1.為什么沒(méi)有Cydia
由于iOS8系統(tǒng)的諸多改變,Cydia以及依賴Substrate框架的許多插件都無(wú)法在iOS8下使用。因此我們?cè)?.0版本的越獄中提供了開(kāi)發(fā)者所需要的一些基礎(chǔ)環(huán)境及SSH等插件,方便Cydia作者及其他開(kāi)發(fā)者能盡快針對(duì)iOS8修改他們的代碼。當(dāng)Cydia作者完成兼容后,我們會(huì)發(fā)布更新來(lái)集成Cydia。所以,盤(pán)古越獄(iOS8)的1.0版本嚴(yán)格來(lái)說(shuō)是為越獄開(kāi)發(fā)者準(zhǔn)備的版本。
2.請(qǐng)勿刪除和禁用"com.apple.mobile.softwareupdated.plist"服務(wù)
請(qǐng)勿在越獄后刪除和停止服務(wù),否則會(huì)造成白蘋(píng)果。
3.越獄失敗的處理小結(jié)
(1)請(qǐng)先打開(kāi)飛行模式并關(guān)閉Wifi后再重新嘗試越獄,如果還是不成功,請(qǐng)重啟手機(jī)后再嘗試
(2)如果還是一直失敗,請(qǐng)使用盤(pán)古刷機(jī)功能重新刷機(jī)后再進(jìn)行越獄。
該框架框架包含視頻相關(guān)的APIs和音頻相關(guān)的APIs。
針對(duì)音頻及視頻,其主要提供的功能可以歸納為4各方面:
1)、Capture
音頻、視頻、圖像媒體的捕捉,并輸出我們可用的數(shù)據(jù)對(duì)象的過(guò)程。
2)、Edit
針對(duì)現(xiàn)有的媒體片段(音頻片段或視頻片段),重新創(chuàng)建Assets,重新加工、生成新的媒體片段。例如,Reading, Writing, Reencoding Assets, Thumbnails
3)、Export
提供導(dǎo)出音視頻的API。例如,修改文件格式、消減時(shí)長(zhǎng)等。
4)、Presentation
例如,播放、音視頻的預(yù)覽
設(shè)備的輸入源主要包括:麥克風(fēng)(Microphone),攝像頭(Camera),屏幕等
輸入源一般包括:AVCaptureVideoPreviewLayer,AVCaptureAudioPreviewOutput,文件、Raw Buffer等。
從一個(gè)設(shè)備,例如照相機(jī)或者麥克風(fēng)管理捕獲,組合對(duì)象來(lái)表示輸入和輸出,并使用 AVCaptureSession 的實(shí)例來(lái)協(xié)調(diào)它們之間的數(shù)據(jù)流。
一個(gè)簡(jiǎn)單的會(huì)話協(xié)調(diào):
AVCapture Session作為整個(gè)Capture的核心,不斷從輸入源獲取數(shù)據(jù),然后分發(fā)給各個(gè)輸出源,從而完成一次簡(jiǎn)單的會(huì)話。
AVCaptureSession參數(shù)配置
開(kāi)始會(huì)話
結(jié)束會(huì)話
然而,很多情況下,需要考慮多個(gè)輸入源是如何被表示以及如何連接到輸出。
輸入源有自己的硬件參數(shù)可以設(shè)置流控,輸出源作為一個(gè)被動(dòng)接受對(duì)象,它并沒(méi)有太多流控設(shè)置,所以蘋(píng)果巧妙的引入AVCaptureConnections。每個(gè)Output與Session建立連接后,都會(huì)分配一個(gè)默認(rèn)的AVCpatureConnection。
AVCaptureConnections就是Session和Output中間的控制節(jié)點(diǎn)。很多實(shí)時(shí)數(shù)據(jù),也都是從connection得到的。
輸入設(shè)備的配置
輸出的配置
接收輸出資源
1)、視頻
2)、照片輸出
借助iOS8,開(kāi)發(fā)者可以使用TouchID、CloudKit、WatchKit、HealthKit以及HomeKit等新特性進(jìn)行開(kāi)發(fā),因此設(shè)計(jì)師需要在APP規(guī)劃階段考慮這些新特性如何放置在APP當(dāng)中。特別是為AppleWatch進(jìn)行設(shè)計(jì)可能會(huì)是一個(gè)巨大的挑戰(zhàn),所以設(shè)計(jì)師應(yīng)當(dāng)提前對(duì)這些特性進(jìn)行考慮。這樣做的話,設(shè)計(jì)師可以花更多的時(shí)間來(lái)處理邊緣情況(edgecases),而這些邊緣情況往往是這些新增功能的副作用所導(dǎo)致的。
篇一:iOS 8自定義動(dòng)畫(huà)轉(zhuǎn)場(chǎng)上手指南
iOS 5發(fā)布的時(shí)候,蘋(píng)果針對(duì)應(yīng)用程序界面的設(shè)計(jì),提出了一種全新的,革命性的方法—Storyboard,它從根本上改變了現(xiàn)有的設(shè)計(jì)理念。iOS 5之前,每個(gè)視圖控制器通常都伴有一個(gè)Interface Builder的文件,叫nib或者xib,這個(gè)想法比較簡(jiǎn)單:每個(gè)視圖控制器的界面應(yīng)該在各自的nib文件中設(shè)計(jì),而所有的nib文件一起構(gòu)成了整個(gè)應(yīng)用程序的界面。一方面,這個(gè)是很方便的,因?yàn)樗鼜?qiáng)迫開(kāi)發(fā)者在界面設(shè)計(jì)的時(shí)候?qū)⒆⒁饬性诮缑嫔希硪环矫?,到最后,太多的文件不得不被?chuàng)建,開(kāi)發(fā)者將不能概覽應(yīng)用的整體界面。
隨著storyboard的產(chǎn)生,上面的這些都成為了歷史,因?yàn)檫@種新方法受到了開(kāi)發(fā)者社區(qū)的廣泛使用。相比老的技術(shù),storyboards提供了三個(gè)重要的優(yōu)勢(shì):
整個(gè)界面設(shè)計(jì)只發(fā)生在一個(gè)文件里。項(xiàng)目的總文件數(shù)量大大減少了,特別是在大項(xiàng)目里。當(dāng)然你可以使用額外的nib文件,并且允許只創(chuàng)建輔助視圖。
開(kāi)發(fā)者能即時(shí)瀏覽應(yīng)用的界面和流程。 視圖控制器之間的轉(zhuǎn)換(界面設(shè)計(jì)的專業(yè)術(shù)語(yǔ)叫場(chǎng)景(scene)),以及轉(zhuǎn)換是如何發(fā)生的,在storyboard中已被完美地定義并清楚地呈現(xiàn)給了開(kāi)發(fā)者。
綜上所述,場(chǎng)景之間的轉(zhuǎn)換構(gòu)成storyboard的特殊部分,我們一般把它叫做轉(zhuǎn)場(chǎng)(segue)。
轉(zhuǎn)場(chǎng)跟應(yīng)用的導(dǎo)航和處理是密切相關(guān)的,因?yàn)樗鞔_定義了一個(gè)視圖切換到另一個(gè)視圖的轉(zhuǎn)換細(xì)節(jié)。這些細(xì)節(jié)指定了是否應(yīng)用動(dòng)畫(huà),動(dòng)畫(huà)的類型,當(dāng)然還有實(shí)際轉(zhuǎn)換時(shí)的準(zhǔn)備和性能。除此之外,轉(zhuǎn)場(chǎng)也用來(lái)將傳遞數(shù)據(jù)到下一個(gè)視圖控制器里,這個(gè)用法也很常見(jiàn)。
從編程的角度看,場(chǎng)景是UIStoryboardSegue類的一個(gè)對(duì)象,它第一次在iOS 5中介紹到。和其它類的對(duì)象
不同的是,這種對(duì)象不能直接的創(chuàng)建或使用。不過(guò)你可以指定轉(zhuǎn)場(chǎng)的屬性,然后在轉(zhuǎn)場(chǎng)即將發(fā)生時(shí)提供給它以達(dá)到目的。UIKit框架提供了一些帶默認(rèn)動(dòng)畫(huà)過(guò)渡的預(yù)定義的轉(zhuǎn)場(chǎng),包括:push segues(包括導(dǎo)航控制器的app),帶有動(dòng)畫(huà)選擇的模態(tài)轉(zhuǎn)場(chǎng)(modal segues), popover segues。更高級(jí)的情況下,iOS SDK默認(rèn)的轉(zhuǎn)場(chǎng)可能不夠用,所以開(kāi)發(fā)者必須實(shí)現(xiàn)他們的自定義轉(zhuǎn)場(chǎng)(custom segues)。 創(chuàng)建一個(gè)自定義轉(zhuǎn)場(chǎng)并不難,因?yàn)樗莍OS標(biāo)準(zhǔn)編程技術(shù)的組成部分。實(shí)際上你只需要生成UIStoryboardSegue的子類,并重載一個(gè)叫perform的方法即可。這個(gè)perform方法中必須實(shí)現(xiàn)自定義動(dòng)畫(huà)的邏輯。從一個(gè)視圖控制器轉(zhuǎn)換到另一個(gè)以及返回操作的觸發(fā),也需要由開(kāi)發(fā)者編程提供,這是一個(gè)標(biāo)準(zhǔn)的步驟。 在本教程中,我的目標(biāo)是向你們展示如何實(shí)現(xiàn)自定義轉(zhuǎn)場(chǎng),并通過(guò)一個(gè)簡(jiǎn)單的演示應(yīng)用介紹這個(gè)概念的所有方面。擁有創(chuàng)建自定義轉(zhuǎn)場(chǎng)的知識(shí), 可以將你導(dǎo)
向開(kāi)發(fā)更強(qiáng)大的app的道路。此外,對(duì)于最大化用戶體驗(yàn),并開(kāi)發(fā)引人注目的漂亮應(yīng)用,自定義轉(zhuǎn)場(chǎng)也很有幫助。 如果你有興趣學(xué)習(xí)我剛剛說(shuō)的話,就一起來(lái)探索教程里的`所有細(xì)節(jié)和自定義轉(zhuǎn)場(chǎng)的奧秘吧。
應(yīng)用程序概述不像我之前幾個(gè)教程提供了一個(gè)啟動(dòng)項(xiàng)目,本教程我們將從頭開(kāi)始創(chuàng)建app。事實(shí)上,我是故意這么做的,因?yàn)椋?xiàng)目中一些重要部分需要用到Interface Builder,所以我認(rèn)為從頭開(kāi)始按部就班的來(lái)做,能讓你看清里面的細(xì)節(jié)。
正如我先前所說(shuō),我們將開(kāi)發(fā)一個(gè)非常簡(jiǎn)單的app,在這個(gè)應(yīng)用中我們將創(chuàng)建兩個(gè)自定義轉(zhuǎn)場(chǎng)。需要提前說(shuō)明的是,我們的演示應(yīng)用將有三個(gè)視圖控制器,也就是在Interface Builder中有三個(gè)場(chǎng)景和三個(gè)相關(guān)類。默認(rèn)情況下,第一個(gè)是由Xcode創(chuàng)建的,因此我們只要再添加兩個(gè)。我們將創(chuàng)建的自定義轉(zhuǎn)場(chǎng)用來(lái)導(dǎo)航第一個(gè)視圖控制器到第二個(gè)
(以及返回),以及從第一個(gè)到第三個(gè)(以及返回)。第二個(gè)和第三個(gè)視圖控制器之間我們不添加任何聯(lián)系。
因此,我們需要?jiǎng)?chuàng)建兩個(gè)自定義轉(zhuǎn)場(chǎng)。因?yàn)橐ǚ祷兀恳粋€(gè)轉(zhuǎn)場(chǎng)需要?jiǎng)?chuàng)建兩個(gè)對(duì)應(yīng)的類(因此,共四個(gè)):第一個(gè)類里我們將實(shí)現(xiàn)從第一個(gè)視圖控制器到另一個(gè)轉(zhuǎn)換的所有自定義邏輯。第二個(gè)類實(shí)現(xiàn)返回到第一個(gè)視圖控制器的邏輯,或者換句話說(shuō)要實(shí)現(xiàn)解除轉(zhuǎn)場(chǎng)(unwind segue)。后面會(huì)講到解除轉(zhuǎn)場(chǎng),現(xiàn)在只需要記住這就是用來(lái)讓我們返回到前一個(gè)視圖控制器的轉(zhuǎn)場(chǎng)。
視圖控制器本身沒(méi)什么需要做的。我們會(huì)用一個(gè)label注明視圖控制器的名稱,每一個(gè)會(huì)有一個(gè)不同的背景顏色,可以讓我們很容易地查看轉(zhuǎn)換(是的,這將是一個(gè)五顏六色的應(yīng)用)。第一個(gè)和第二個(gè)視圖控制器也會(huì)多一個(gè)label,其中從其他視圖控制器傳來(lái)的自定義的消息將被顯示出來(lái)。
最后,轉(zhuǎn)場(chǎng)將在以下的動(dòng)作發(fā)生的時(shí)候
篇二:Swift常用UIView Animation API使用
Swift常用UIView Animation API使用
本文默認(rèn)讀者有基礎(chǔ)動(dòng)畫(huà)編寫(xiě)能力
參數(shù)解釋
*如解釋有誤,請(qǐng)指出,謝謝*
1 duration: 動(dòng)畫(huà)執(zhí)行時(shí)間
2 delay:動(dòng)畫(huà)延遲執(zhí)行時(shí)間
3 options:
.Repeat:動(dòng)畫(huà)永遠(yuǎn)重復(fù)的運(yùn)行
.Autoreverse:動(dòng)畫(huà)執(zhí)行結(jié)束后按照相反的行為繼續(xù)執(zhí)行。該屬性只能和.Repeat屬性組合使用
.CurveLinear:動(dòng)畫(huà)做線性運(yùn)動(dòng)
.CurveEaseIn:動(dòng)畫(huà)緩慢開(kāi)始,然后逐漸加速
.CurveEaseOut:動(dòng)畫(huà)迅速開(kāi)始,在結(jié)束時(shí)減速
.CurveEaseInOut:動(dòng)畫(huà)慢慢開(kāi)始,然后加速,在結(jié)束之前減速.TransitionNone:沒(méi)有轉(zhuǎn)場(chǎng)動(dòng)畫(huà)
.TransitionFlipFromTop :從頂部圍繞水平軸做翻轉(zhuǎn)動(dòng)畫(huà) .TransitionFlipFromBottom:從底部圍繞水平軸做翻轉(zhuǎn)動(dòng)畫(huà)
.TransitionFlipFromLeft :從左側(cè)圍繞垂直軸做翻轉(zhuǎn)動(dòng)畫(huà)
.TransitionFlipFromRight:從右側(cè)圍繞垂直軸做翻轉(zhuǎn)動(dòng)畫(huà)
.TransitionCurlUp:從下往上做翻頁(yè)動(dòng)畫(huà)
.TransitionCurlDown :從上往下做翻頁(yè)動(dòng)畫(huà)
.TransitionCrossDissolve:視圖溶解消失顯示新視圖動(dòng)畫(huà)
4 usingSpringWithDamping:彈簧阻力,取值范圍為0.0-1.0,數(shù)值越小“彈簧”振動(dòng)效果越明顯。
5 initialSpringVelocity:動(dòng)畫(huà)初始的速度(pt/s),數(shù)值越大初始速度越快。但要注意的是,初始速度取值較高而時(shí)間較短時(shí),也會(huì)出現(xiàn)反彈情況。普通動(dòng)畫(huà)
animateWithDuration:delay:options:animations:completion: class func animateWithDuration(_ duration: NSTimeInterval,
delay delay: NSTimeInterval,
options options: UIViewAnimationOptions,
animations animations: () - Void,
completion completion: ((Bool) - Void))
Animate changes to one or more views using the specified duration, delay, options, and completion handler.
對(duì)一個(gè)或者多個(gè)視圖按照相應(yīng)參數(shù)做固定動(dòng)畫(huà)(翻譯純屬個(gè)人見(jiàn)解,有錯(cuò)請(qǐng)指出)
animateWithDuration:delay:usingSpringWithDamping:initialSpringVelocity:options:animations:completion:
class func animateWithDuration(_ duration: NSTimeInterval,
delay delay: NSTimeInterval,
usingSpringWithDamping dampingRatio: CGFloat,
initialSpringVelocity velocity: CGFloat,
options options: UIViewAnimationOptions,
animations animations: () - Void,
completion completion: ((Bool) - Void))
Performs a view animation using a timing curve corresponding to the motion of a physical spring.
對(duì)一個(gè)視圖按照相應(yīng)參數(shù)做彈性動(dòng)畫(huà)(類似于彈簧,翻譯純屬個(gè)人見(jiàn)解,有錯(cuò)請(qǐng)指出)
圖片借鑒Renfei Song's Blog,只為更清楚的展示調(diào)用兩個(gè)API的不同效果
Spring Animation 和普通的動(dòng)畫(huà)的運(yùn)動(dòng)曲線的對(duì)比:
Spring Animation, Ease-Out Animation 和 Linear Animation 的動(dòng)畫(huà)效果:
轉(zhuǎn)場(chǎng)動(dòng)畫(huà)
transitionWithView:duration:options:animations:completion: class func transitionWithView(_ view: UIView,
duration duration: NSTimeInterval,
options options: UIViewAnimationOptions,
animations animations: (() - Void),
completion completion: ((Bool) - Void))
Creates a transition animation for the specified container view.為指定的視圖構(gòu)建一個(gè)過(guò)渡動(dòng)畫(huà)(翻譯純屬個(gè)人見(jiàn)解,有錯(cuò)請(qǐng)指出)transitionFromView:toView:duration:options:completion:
class func transitionFromView(_ fromView: UIView,
toView toView: UIView,
duration duration: NSTimeInterval,
options options: UIViewAnimationOptions,
completion completion: ((Bool) - Void))
Creates a transition animation between the specified views using the given parameters.
在兩個(gè)給定視圖之間構(gòu)建過(guò)渡動(dòng)畫(huà)(翻譯純屬個(gè)人見(jiàn)解,有錯(cuò)請(qǐng)指出)
以上為UIView Animation的基礎(chǔ)動(dòng)畫(huà)API,使用其實(shí)很簡(jiǎn)單,就是要理解不同參數(shù)的意義。
篇三:iOS開(kāi)發(fā)學(xué)習(xí)之核心動(dòng)畫(huà)
核心動(dòng)畫(huà)基本概念
基礎(chǔ)動(dòng)畫(huà)(CABasicAnimation)
關(guān)鍵幀動(dòng)畫(huà)(CAKeyframeAnimation)
動(dòng)畫(huà)組
轉(zhuǎn)場(chǎng)動(dòng)畫(huà)-CATransition
UIView的轉(zhuǎn)場(chǎng)動(dòng)畫(huà)-雙視圖
一、核心動(dòng)畫(huà)基本概念
1.導(dǎo)入QuartzCore.framework框架
開(kāi)發(fā)步驟
1).初始化一個(gè)動(dòng)畫(huà)對(duì)象(CAAnimation)并且設(shè)置一些動(dòng)畫(huà)相關(guān)屬性
2).CALayer中很多屬性都可以通過(guò)CAAnimation實(shí)現(xiàn)動(dòng)畫(huà)效果,包括:opacity、position、transform、bounds、contents等(可以在API文檔中搜索:CALayer Animatable Properties)
3).添加動(dòng)畫(huà)對(duì)象到層(CALayer)中,開(kāi)始執(zhí)行動(dòng)畫(huà)
4).通過(guò)調(diào)用CALayer的addAnimation:forKey增加動(dòng)畫(huà)到層(CALayer)中,這樣就能觸發(fā)動(dòng)畫(huà)。通過(guò)調(diào)用removeAnimationForKey可以停止層中的動(dòng)畫(huà)
5).Core Animation的動(dòng)畫(huà)執(zhí)行過(guò)程都是后臺(tái)操作的,不會(huì)阻塞主線程
2.屬性
1).duration:動(dòng)畫(huà)的持續(xù)時(shí)間
2).repeatCount:重復(fù)次數(shù)(HUGE_VALF、MAX FLOAT無(wú)限重復(fù))
3).repeatDuration:重復(fù)時(shí)間(用的很少)
4).removedOnCompletion:默認(rèn)為Yes。動(dòng)畫(huà)執(zhí)行完后默認(rèn)會(huì)從圖層刪除掉
5).fillMode
6).biginTime
7).timingFunction:速度控制函數(shù),控制動(dòng)畫(huà)節(jié)奏
8).delegate
二、基礎(chǔ)動(dòng)畫(huà)(CABasicAnimation)
如果只是實(shí)現(xiàn)簡(jiǎn)單屬性變化的動(dòng)畫(huà)效果,可以使用UIView的塊動(dòng)畫(huà)替代基本動(dòng)畫(huà)
1.屬性說(shuō)明
-fromValue:keyPath相應(yīng)屬性值的初始值
-toValue:keyPath相應(yīng)屬性的結(jié)束值
2.動(dòng)畫(huà)過(guò)程說(shuō)明:
-隨著動(dòng)畫(huà)的就行,在duration的持續(xù)時(shí)間內(nèi),keyPath相應(yīng)的屬性值從fromValue漸漸變?yōu)閠oValue
-keyPath內(nèi)容是CALayer的可動(dòng)畫(huà)Animation屬性
-如果fillMode=kCAFillModeForwards同時(shí)removedOnCompletion=NO,那么在動(dòng)畫(huà)執(zhí)行完畢后,圖層會(huì)保持顯示動(dòng)畫(huà)執(zhí)行后的狀態(tài),但在實(shí)質(zhì)上,圖層的屬性值還是動(dòng)畫(huà)執(zhí)行前的初始值,并沒(méi)有真正改變
3.代碼實(shí)現(xiàn)
位移需要考慮目標(biāo)點(diǎn)設(shè)定的問(wèn)題
1.將動(dòng)畫(huà)的所有方法封裝到一個(gè)類里面
MyCAHelper.h
#import
#import
#define kCAHelperAlphaAnimation @"opacity"; ?// 淡入淡出動(dòng)畫(huà) #define kCAHelperScaleAnimation @"transform.scale";// 比例縮放動(dòng)畫(huà)
#define kCAHelperRotationAnimation @"transform.rotation";// 旋轉(zhuǎn)動(dòng)畫(huà)
#define kCAHelperPositionAnimation @"position"; // 平移位置動(dòng)畫(huà)
@interface MyCAHelper : NSObject
#pragma mark - 基本動(dòng)畫(huà)統(tǒng)一調(diào)用方法
+ (CABasicAnimation *)myBasicAnimationWithType:(NSString *)animationTypeduration:(CFTimeInterval)duration from:(NSValue *)from
to:(NSValue *)to
autoRevereses:(BOOL)autoRevereses;
#pragma mark - 關(guān)鍵幀動(dòng)畫(huà)方法
#pragma mark 搖晃動(dòng)畫(huà)
+ (CAKeyframeAnimation
*)myKeyShakeAnimationWithDuration:(CFTimeInterval)duration
angle:(CGFloat)angle
repeatCount:(CGFloat)repeatCount;
#pragma mark 貝塞爾路徑動(dòng)畫(huà)
+ (CAKeyframeAnimation *)myKeyPathAnimationWithDuration:(CFTimeInterval)durationpath:(UIBezierPath *)path;
#pragma mark 彈力仿真動(dòng)畫(huà)
+ (CAKeyframeAnimation *)myKeyBounceAnimationFrom:(CGPoint)from
to:(CGPoint)to
duration:(CFTimeInterval)duration;
@end
MyCAHelper.m
#import "MyCAHelper.h"
@implementation MyCAHelper
#pragma mark - 基本動(dòng)畫(huà)統(tǒng)一調(diào)用方法
+ (CABasicAnimation *)myBasicAnimationWithType:(NSString *)animationTypeduration:(CFTimeInterval)duration
from:(NSValue *)from
to:(NSValue *)to
autoRevereses:(BOOL)autoRevereses
{
// 1. 實(shí)例化一個(gè)CA動(dòng)畫(huà)對(duì)象
CABasicAnimation *anim = [CABasicAnimation animationWithKeyPath:animationType];
// 2. 設(shè)置動(dòng)畫(huà)屬性
[anim setDuration:duration];
[anim setFromValue:from];
[anim setToValue:to];
[anim setAutoreverses:autoRevereses];
return anim;
}
#pragma mark - 關(guān)鍵幀動(dòng)畫(huà)方法
#pragma mark 搖晃動(dòng)畫(huà)
+ (CAKeyframeAnimation
*)myKeyShakeAnimationWithDuration:(CFTimeInterval)duration
angle:(CGFloat)angle
repeatCount:(CGFloat)repeatCount
{
// 1. 初始化動(dòng)畫(huà)對(duì)象實(shí)例
CAKeyframeAnimation *anim = [CAKeyframeAnimation
animationWithKeyPath:@"transform.rotation"];
// 2. 設(shè)置動(dòng)畫(huà)屬性
[anim setDuration:duration];
[anim setValues:@[@(angle), @(-angle), @(angle)]];
[anim setRepeatCount:repeatCount];
return anim;
}
#pragma mark 貝塞爾路徑動(dòng)畫(huà)
+ (CAKeyframeAnimation *)myKeyPathAnimationWithDuration:(CFTimeInterval)duration path:(UIBezierPath *)path
{
// 1. 初始化動(dòng)畫(huà)對(duì)象實(shí)例
CAKeyframeAnimation *anim = [CAKeyframeAnimation
animationWithKeyPath:@"position"];
// 2. 設(shè)置動(dòng)畫(huà)屬性
[anim setDuration:duration];
準(zhǔn)確的說(shuō),是使用objective-c語(yǔ)言開(kāi)發(fā)iOS應(yīng)用
第一階段: RayWenderlich網(wǎng)站中的 The iOS Apprentice教程 (難度指數(shù):※)
以上有幾個(gè)答案提到了這個(gè)網(wǎng)站,但看什么教程沒(méi)有細(xì)說(shuō),我在這里簡(jiǎn)單說(shuō)說(shuō)。The iOS Apprentice的教程針對(duì)完全沒(méi)有編程經(jīng)驗(yàn)的人設(shè)計(jì)。這個(gè)教程是外國(guó)人寫(xiě)的并且有免費(fèi)試讀版,感興趣的人要看看。里面說(shuō)的東西都非常非常基本,里面一個(gè)共講解了4個(gè)不同類型app,強(qiáng)烈建議一步一步按照上面所寫(xiě)的步驟敲一遍代碼。其中你會(huì)遇到很多復(fù)雜的語(yǔ)句和長(zhǎng)的可怕的函數(shù),你不用感到恐慌,照著敲,知道它干嘛用完全OK了,隨著你編程時(shí)間以及經(jīng)驗(yàn)的增加,你都會(huì)懂得。
附鏈接:
注:這個(gè)教程是英文原版,并且收費(fèi),只免費(fèi)提供一個(gè)app的教程。如果看完了這個(gè)免費(fèi)的教程覺(jué)得還挺想繼續(xù)學(xué)的請(qǐng)參考 @王寒 老師的翻譯教程(只有前3個(gè)app教程,第4個(gè)教程剛出,國(guó)內(nèi)應(yīng)該還沒(méi)有人翻譯,如果想看只能付費(fèi))。PS:(現(xiàn)在開(kāi)發(fā)iOS應(yīng)用基本都是用Objective-C,至于剛出來(lái)的Swift現(xiàn)階段暫時(shí)不推薦學(xué)習(xí),如果想了解王寒老師也做了swift版本的The iOS Apprentice教程翻譯,自己去找)
附上王寒老師教程下載地址:
第二階段:培訓(xùn)班的網(wǎng)絡(luò)課程及入門書(shū)籍
經(jīng)過(guò)第一個(gè)階段你應(yīng)該已經(jīng)大致掌握IOS開(kāi)發(fā)流程,能編寫(xiě)一個(gè)非常簡(jiǎn)單的應(yīng)用了。這時(shí)候相信你的熱情應(yīng)該會(huì)很高漲,但接下來(lái)的學(xué)習(xí)可能會(huì)很枯燥,做好準(zhǔn)備。網(wǎng)絡(luò)課程的話推薦李明杰的課程,不推薦其他的。(他目前在廣州創(chuàng)業(yè)建立自己的培訓(xùn)品牌,沒(méi)有自制力看網(wǎng)絡(luò)課程的請(qǐng)去找他。杰哥開(kāi)源了一些非常優(yōu)秀的框架如:MJExtension )
建議首先要惡補(bǔ)基礎(chǔ)知識(shí)。經(jīng)過(guò)第一個(gè)階段你可能覺(jué)得你懂不少了,但是只是表面,尤其是沒(méi)學(xué)過(guò)編程的應(yīng)該好好學(xué)習(xí)一下視頻前面的課程,主要看看語(yǔ)法。等你看惡心了看煩了就去看視頻里UI部分,這里相對(duì)于來(lái)說(shuō)比較輕松,一定要把視頻里寫(xiě)的語(yǔ)句打一遍,相信這樣你理解會(huì)更深刻。里面說(shuō)的不清楚的地方上網(wǎng)可以百度,可以查書(shū)(如果你有書(shū)的話)。
Q:視頻教程是用來(lái)做什么的?
A:光有實(shí)踐沒(méi)有知識(shí)是寫(xiě)不好程序的,第一階段基本都是實(shí)踐,第二部分則是用來(lái)查缺補(bǔ)漏。 之所以推薦網(wǎng)絡(luò)課程是因?yàn)橹v解的比較系統(tǒng),各種入門知識(shí)都會(huì)涉及。因?yàn)閕OS所涉及內(nèi)容龐 大單看幾本書(shū)還是涉及不全的。
Q:上不上培訓(xùn)班?
A:個(gè)人意見(jiàn)是不推薦去,自學(xué)足夠了。現(xiàn)在學(xué)習(xí)iOS的環(huán)境比前幾年好太多了,光憑借網(wǎng)上的資料是 完全可以的學(xué)得很好的,如果你連這點(diǎn)學(xué)習(xí)能力還沒(méi)有我也不相信你將來(lái)能成為一個(gè)很優(yōu)秀的工程師。而且你會(huì)發(fā)現(xiàn)在社會(huì)上一些互聯(lián)網(wǎng)公司是拒絕接收培訓(xùn)班出來(lái)的人。
推薦入門書(shū)籍:
tips:以下所有書(shū)籍有英文版看英文版,有最新版看最新版
1、《Objective-C 程序設(shè)計(jì)》(難度指數(shù):※※)
2、《iOS 7應(yīng)用開(kāi)發(fā)入門經(jīng)典》(難度指數(shù):※※)
3、《iOS開(kāi)發(fā)指南-0基礎(chǔ)到AppStore上架》(難度指數(shù):※※※)
4、《iOS編程實(shí)戰(zhàn)》(難度指數(shù):※※※※)
這里面講解的很清楚,后面甚至有簡(jiǎn)單的項(xiàng)目可以練手,這對(duì)于看視頻教程看惡心的同學(xué)是個(gè)福音~(yú)你可以先做項(xiàng)目遇到不懂的再看視頻。
這里我想多說(shuō)一句,買iOS開(kāi)發(fā)的輔導(dǎo)書(shū)千萬(wàn)別買過(guò)時(shí)太久的,我看以上有答案還推薦iOS4系列叢書(shū)呢...拜托現(xiàn)在都什么年代了,現(xiàn)在iOS8教程都要出來(lái)了,你iOS6的教程都過(guò)時(shí)好久了更別提iOS4了...對(duì)于新出的swift語(yǔ)言好多人難以選擇不知道該學(xué)OC好還是Swift好。我個(gè)人建議現(xiàn)在學(xué)OC,一門新語(yǔ)言的誕生需要經(jīng)過(guò)時(shí)間的考驗(yàn)與洗禮。等你學(xué)好了OC以后再看也不遲。
第三階段及以后
到這個(gè)階段你應(yīng)該擁有了充分的自學(xué)能力,已經(jīng)達(dá)到了入門水平。
這時(shí)候以下網(wǎng)址將成為你的家常便飯:
Github,StackOverFlow
如果你編程遇到困難,在StackOverFlow上面應(yīng)該都能找到合適的解答。(前提是你英文不要太差)。Github上好多開(kāi)源代碼足夠豐富你的眼界。如果你想成為一個(gè)iOS開(kāi)發(fā)者的話這上面兩個(gè)網(wǎng)站是你經(jīng)常以及必須會(huì)用到的。