詳解統(tǒng)一在最下方,或查看git文件中的README
字體的漸隱漸現(xiàn)罢绽、漸進漸出
金額的大寫顯示
- 地址: 金額的大寫顯示
1.gif
返回程序彈出密碼框
- 地址: 返回程序彈出密碼框
文件管理器
- 地址:文件管理器
旋轉的tableView
- 地址:[旋轉的tableView](https://github.com/DrunkenMouse/rotateTableView)
- 這個有必要先說下,將一個tableView旋轉90度有缆,內部的tableViewCell在逆轉90度象踊。達到tableView橫向滾動,內部cell上掛載一個新的tableView用于顯示棚壁。感謝NSLog的幫助。
Demo詳解
字體的漸隱漸現(xiàn)栈虚、漸進漸出
仿RQShineLabel RQShineLabel
設置ADLabel的text內容時袖外,就會通過text的set方法將字符串轉換成可變字符串 通過可變字符串的set方法,將字符串中的字符顏色透明度都設置為0并賦值給ADLabel 并為每個字符設置一個隨機并基于動畫時間而生成的淡出時間保存在數(shù)組中
shine方法:動畫開啟并沒有指定完成后的操作 shineWithCompletion: 動畫開啟并指定完成后的操作 調用shine方法后會調用shineWithCompletion魂务,傳過去的操作為nil 在shineWithCompletion方法中會完成保存操作,并設置淡出效果為NO,而后開啟動畫
開啟動畫:startAnimationWithDuration 其中會獲取當前時間為開始時間曼验,開始時間加字體漸近時間shineDuration為結束時間 通過取消幀動畫的暫停開啟幀動畫updateAttributedString
幀動畫里會獲取當前時間用于判斷是否超出動畫時間 遍歷可變字符串的每個字符,并修改除空格粘姜、回車(包含'\n')鬓照、tab之外的字符的透明度 透明度是否修改通過以下方式判斷: 1.淡出效果并且透明度大于0 2.不是淡出效果并且透明度小于1 3.當前時間 - 動畫開始時間 >= 基于淡出效果而生成的一個隨機時間 應該更新則獲取所需透明度值 : 當前時間 - 開始時間 - 基于淡出效果而生成的一個隨機時間 如果是淡出狀態(tài)就獲取 1 - 透明度值 修改完后設置可變字符串內容 并判斷如果當前時間超過動畫結束時間,暫停幀動畫孤紧,執(zhí)行結束操作
至此豺裆,動畫效果完成
fadeOut: 手動開啟淡出效果但沒有結束后的操作 fadeOutWithCompletion: 手動開啟淡出效果并有結束后的操作 */
輸入金額大寫顯示
通過代理方法實現(xiàn),每輸入一個數(shù)字就替代成一個對應的中文漢字。
返回程序彈出密碼框
返回程序彈出密碼框 參考巧哥(唐巧)的返回程序彈出密碼框
在appDelegate里的applicationDidEnterBackground 方法中調用 [[PasswordInputWindow sharedInstance] show];
會創(chuàng)建一個window的單列對象臭猜,并在show方法里讓其成為主window 因此會在所有圖層的上方躺酒,而UIWindow繼承UIView,可在創(chuàng)建時進行初始化設置
文件管理器
仿寫HYFileManager HYFileManager 附帶詳解
- 沙盒目錄相關
主目錄,tmp目錄路徑可直接獲取 libraryDir通過NSSearchPathForDirectoriesInDomains Library / Preferences的目錄通過libraryDir拼接 Library / Caches的目錄通過NSSearch搜索CachesDirectory
NSSearchPathForDirectoriesInDomains 第一個參數(shù)是哪個目錄 第二個參數(shù)是搜索誰的 第三個參數(shù) ' ~ ' 路徑是否展開 ' ~ ' 路徑是詳細路徑前半段直接隱藏用' ~ '顯示
- 遍歷文件夾
通過FileManager的subpathsOfDirectoryAtPath:error:深遍歷路徑 通過FileManager的contentsOfDirectoryAtPath:error:淺遍歷路徑
- 獲取文件屬性
先通過FileManager的attributesOfItemAtPath:error:獲取路徑下文件屬性集合蔑歌,而后通過key取出某個屬性
- 創(chuàng)建文件(夾)
創(chuàng)建文件夾:通過fileManager的createDirectoryAtPath:withIntermediateDirectories:attributes:error:
createDirectoryAtPath:withIntermediateDirectories:attributes:error: 第一個參數(shù)代表文件夾路徑 第二個參數(shù)代表是否允許創(chuàng)建中間目錄 第三個參數(shù)代表設置羹应,如訪問權限、所屬用戶/用戶組次屠。nil代表選擇系統(tǒng)默認設置园匹。 第四個參數(shù)代表錯誤信息
創(chuàng)建文件:通過fileManager的createFileAtPath:contents:attributes: 如果文件夾路徑不存在,則先創(chuàng)建文件夾劫灶。通過自定義方法directoryAtPath判斷 如果創(chuàng)建失敗返回NO裸违,沒有錯誤信息 如果文件存在但不想復寫則返回YES 先創(chuàng)建文件,而后判斷是否寫入內容 content代表寫入的內容浑此,如果有則寫入
獲取文件修改時間累颂、創(chuàng)建時間則先獲取文件的所有屬性 通過KeyNSFileModificationDate(修改) NSFileCreationDate(創(chuàng)建) 獲取到所需的修改時間、創(chuàng)建時間
- 刪除文件(夾)
刪除文件/文件夾 通過fileManager的removeItemAtPath:error:直接刪除這個路徑文件/文件夾
清空Caches文件夾: 先淺遍歷cache文件夾凛俱,獲取其下所有文件與目錄 而后拼接在cache路徑后紊馏,通過自定義方法removeItemAtPath:移除 讓一個BOOL值為YES的isSuccess &= 移除后的結果值 則有一個移除錯誤就會為NO
清空tmp文件夾同上
- 復制文件(夾)
復制文件/文件夾 先要保證源文件路徑存在,不然通過NSException拋出異常 而后獲取路徑上的文件夾蒲犬,如果文件夾路徑不存在則創(chuàng)建文件夾路徑朱监,創(chuàng)建失敗直接返回NO 而后判斷是否允許重寫,如果允許重寫且文件存在則先刪掉要重寫的文件
調用fileManager的copyItemAtPath:toPath:error:復制文件
- 移動文件(夾)
同復制文件夾原叮,只是移動時若文件存在且不允許重寫則把源文件移除而后返回YES 如果文件存在且允許重寫則移除要重寫的文件而后移動源文件
調用fileManager的moveItemAtPath:toPath:error:移動源文件
- 根據(jù)URL獲取文件名
根據(jù)文件路徑獲取文件名稱赫编,是否需要后綴 直接通過字符串的lastPathComponent方法獲取文件名稱 若不需要后綴則通過stringByDeletingPathExtension刪除掉后綴
獲取文件所在的文件夾路徑 直接通過字符串的stringByDeletingLastPathComponent刪除最后一個目錄 也就是最后一個' / '之后的內容包括' / '
根據(jù)文件路徑獲取文件擴展類型 直接通過字符串的pathExtension獲取擴展名 會從最后面截取' . '之后的內容
- 判斷文件(夾)是否存在
判斷文件路徑是否存在直接通過fileManager的fileExistsAtPath:方法判斷
判斷路徑是否為空(判斷條件是文件大小為0, 或者是文件夾下沒有子文件) 目標路徑是一個文件并且文件大小是0 或 目標路徑是一個文件夾并且文件夾下沒有子文件
判斷目錄是否是文件夾,通過文件屬性NSFileType得值是否為NSFileTypeDirectory
判斷目錄是否是文件,通過文件屬性NSFileType得值是否為NSFileTypeRegular
可執(zhí)行、可讀奋隶、可寫通過fileManager的isExecutableFileAtPath擂送、 isReadableFileAtPath、isWritableFileAtPath判斷
- 獲取文件(夾)大小
獲取文件/目錄大小 通過屬性的key值NSFileSize獲取 只是獲取文件大小時唯欣,若目標路徑不是文件則返回nil
獲取文件夾大小時先判斷路徑是否為文件夾嘹吨,不是則返回nil 而后獲取文件夾的目錄大小,再深遍歷文件夾累加目錄和文件境氢、子文件夾大小
- 寫入文件內容
寫入文件內容時蟀拷,如果文件不存在就異常警告并返回NO 如果文件路徑不存在則返回NO 如果文件存在,路徑存在就根據(jù)文件所屬類型轉換并寫入 (不轉換就是NSObject類型無法調用write方法) atomically是否允許持續(xù)寫入 其中JSON格式轉變?yōu)樽值漕愋?UIImage格式通過UIImagePNGRepresentation轉變?yōu)镹SData類型 NSCoding類型通過[NSKeyedArchiver archiveRootObject:content toFile:path] 如果類型都不對則異常提示并返回NO
- private methods
轉換錯誤信息,如果錯誤信息為空則返回YES萍聊。不過沒有用到 //轉換大小格式,顯示如:2KB 或4.26MB 或1002.25GB