├── Demo ├── POP │ ├── POP.xcodeproj │ │ ├── project.pbxproj │ │ ├── project.xcworkspace │ │ │ ├── contents.xcworkspacedata │ │ │ └── xcuserdata │ │ │ │ └── adobe.xcuserdatad │ │ │ │ └── UserInterfaceState.xcuserstate │ │ └── xcuserdata │ │ │ └── adobe.xcuserdatad │ │ │ └── xcschemes │ │ │ ├── POP.xcscheme │ │ │ └── xcschememanagement.plist │ └── POP │ │ ├── AppDelegate.swift │ │ ├── Assets.xcassets │ │ └── AppIcon.appiconset │ │ │ └── Contents.json │ │ ├── Base.lproj │ │ ├── LaunchScreen.storyboard │ │ └── Main.storyboard │ │ ├── Dog.swift │ │ ├── HomeViewController.swift │ │ ├── Info.plist │ │ ├── Protocol.swift │ │ └── TestView.swift ├── Path │ ├── Path.xcodeproj │ │ ├── project.pbxproj │ │ ├── project.xcworkspace │ │ │ └── contents.xcworkspacedata │ │ └── xcuserdata │ │ │ └── adobe.xcuserdatad │ │ │ └── xcschemes │ │ │ ├── Path.xcscheme │ │ │ └── xcschememanagement.plist │ ├── Path │ │ ├── AppDelegate.h │ │ ├── AppDelegate.m │ │ ├── Assets.xcassets │ │ │ ├── AppIcon.appiconset │ │ │ │ └── Contents.json │ │ │ ├── Contents.json │ │ │ ├── Images │ │ │ │ ├── Contents.json │ │ │ │ ├── Default-flat.imageset │ │ │ │ │ ├── Contents.json │ │ │ │ │ └── Default-flat@2x.png │ │ │ │ ├── chooser-button-input-highlighted.imageset │ │ │ │ │ ├── Contents.json │ │ │ │ │ ├── chooser-button-input-highlighted.png │ │ │ │ │ └── chooser-button-input-highlighted@2x.png │ │ │ │ ├── chooser-button-input.imageset │ │ │ │ │ ├── Contents.json │ │ │ │ │ ├── chooser-button-input.png │ │ │ │ │ └── chooser-button-input@2x.png │ │ │ │ ├── chooser-button-tab-highlighted.imageset │ │ │ │ │ ├── Contents.json │ │ │ │ │ ├── chooser-button-tab-highlighted.png │ │ │ │ │ └── chooser-button-tab-highlighted@2x.png │ │ │ │ ├── chooser-button-tab.imageset │ │ │ │ │ ├── Contents.json │ │ │ │ │ ├── chooser-button-tab.png │ │ │ │ │ └── chooser-button-tab@2x.png │ │ │ │ ├── chooser-moment-button-highlighted.imageset │ │ │ │ │ ├── Contents.json │ │ │ │ │ ├── chooser-moment-button-highlighted.png │ │ │ │ │ └── chooser-moment-button-highlighted@2x.png │ │ │ │ ├── chooser-moment-button.imageset │ │ │ │ │ ├── Contents.json │ │ │ │ │ ├── chooser-moment-button.png │ │ │ │ │ └── chooser-moment-button@2x.png │ │ │ │ ├── chooser-moment-icon-camera-highlighted.imageset │ │ │ │ │ ├── Contents.json │ │ │ │ │ ├── chooser-moment-icon-camera-highlighted.png │ │ │ │ │ └── chooser-moment-icon-camera-highlighted@2x.png │ │ │ │ ├── chooser-moment-icon-camera.imageset │ │ │ │ │ ├── Contents.json │ │ │ │ │ ├── chooser-moment-icon-camera.png │ │ │ │ │ └── chooser-moment-icon-camera@2x.png │ │ │ │ ├── chooser-moment-icon-music-highlighted.imageset │ │ │ │ │ ├── Contents.json │ │ │ │ │ ├── chooser-moment-icon-music-highlighted.png │ │ │ │ │ └── chooser-moment-icon-music-highlighted@2x.png │ │ │ │ ├── chooser-moment-icon-music.imageset │ │ │ │ │ ├── Contents.json │ │ │ │ │ ├── chooser-moment-icon-music.png │ │ │ │ │ └── chooser-moment-icon-music@2x.png │ │ │ │ ├── chooser-moment-icon-place-highlighted.imageset │ │ │ │ │ ├── Contents.json │ │ │ │ │ ├── chooser-moment-icon-place-highlighted.png │ │ │ │ │ └── chooser-moment-icon-place-highlighted@2x.png │ │ │ │ ├── chooser-moment-icon-place.imageset │ │ │ │ │ ├── Contents.json │ │ │ │ │ ├── chooser-moment-icon-place.png │ │ │ │ │ └── chooser-moment-icon-place@2x.png │ │ │ │ ├── chooser-moment-icon-sleep-highlighted.imageset │ │ │ │ │ ├── Contents.json │ │ │ │ │ ├── chooser-moment-icon-sleep-highlighted.png │ │ │ │ │ └── chooser-moment-icon-sleep-highlighted@2x.png │ │ │ │ ├── chooser-moment-icon-sleep.imageset │ │ │ │ │ ├── Contents.json │ │ │ │ │ ├── chooser-moment-icon-sleep.png │ │ │ │ │ └── chooser-moment-icon-sleep@2x.png │ │ │ │ ├── chooser-moment-icon-thought-highlighted.imageset │ │ │ │ │ ├── Contents.json │ │ │ │ │ ├── chooser-moment-icon-thought-highlighted.png │ │ │ │ │ └── chooser-moment-icon-thought-highlighted@2x.png │ │ │ │ └── chooser-moment-icon-thought.imageset │ │ │ │ │ ├── Contents.json │ │ │ │ │ ├── chooser-moment-icon-thought.png │ │ │ │ │ └── chooser-moment-icon-thought@2x.png │ │ │ └── TabBar │ │ │ │ ├── Contents.json │ │ │ │ ├── account_highlight.imageset │ │ │ │ ├── Contents.json │ │ │ │ └── account_highlight@2x.png │ │ │ │ ├── account_normal.imageset │ │ │ │ ├── Contents.json │ │ │ │ └── account_normal@2x.png │ │ │ │ ├── fish_highlight.imageset │ │ │ │ ├── Contents.json │ │ │ │ └── fish_highlight@2x.png │ │ │ │ ├── fish_normal.imageset │ │ │ │ ├── Contents.json │ │ │ │ └── fish_normal@2x.png │ │ │ │ ├── home_highlight.imageset │ │ │ │ ├── Contents.json │ │ │ │ └── home_highlight@2x.png │ │ │ │ ├── home_normal.imageset │ │ │ │ ├── Contents.json │ │ │ │ └── home_normal@2x.png │ │ │ │ ├── message_highlight.imageset │ │ │ │ ├── Contents.json │ │ │ │ └── message_highlight@2x.png │ │ │ │ ├── message_normal.imageset │ │ │ │ ├── Contents.json │ │ │ │ └── message_normal@2x.png │ │ │ │ ├── mycity_highlight.imageset │ │ │ │ ├── Contents.json │ │ │ │ └── mycity_highlight@2x.png │ │ │ │ ├── mycity_normal.imageset │ │ │ │ ├── Contents.json │ │ │ │ └── mycity_normal@2x.png │ │ │ │ ├── post_normal.imageset │ │ │ │ ├── Contents.json │ │ │ │ └── post_normal@2x.png │ │ │ │ └── tapbar_top_line.imageset │ │ │ │ ├── Contents.json │ │ │ │ └── tapbar_top_line@2x.png │ │ ├── Base.lproj │ │ │ └── LaunchScreen.storyboard │ │ ├── DCPathButton.h │ │ ├── DCPathButton.m │ │ ├── DCPathItemButton.h │ │ ├── DCPathItemButton.m │ │ ├── Info.plist │ │ ├── JJTabBarController.h │ │ ├── JJTabBarController.m │ │ ├── ViewController.h │ │ ├── ViewController.m │ │ ├── bloom.caf │ │ ├── fold.caf │ │ ├── main.m │ │ └── selected.caf │ └── path.gif ├── Transition │ ├── Transition.xcodeproj │ │ ├── project.pbxproj │ │ ├── project.xcworkspace │ │ │ └── contents.xcworkspacedata │ │ └── xcuserdata │ │ │ └── adobe.xcuserdatad │ │ │ ├── xcdebugger │ │ │ └── Breakpoints_v2.xcbkptlist │ │ │ └── xcschemes │ │ │ ├── Transition.xcscheme │ │ │ └── xcschememanagement.plist │ └── Transition │ │ ├── 1.png │ │ ├── 2.png │ │ ├── App.h │ │ ├── AppDelegate.h │ │ ├── AppDelegate.m │ │ ├── Assets.xcassets │ │ ├── 1.imageset │ │ │ ├── 1.png │ │ │ └── Contents.json │ │ ├── 2.imageset │ │ │ ├── 2.png │ │ │ └── Contents.json │ │ ├── AppIcon.appiconset │ │ │ └── Contents.json │ │ ├── Contents.json │ │ ├── base.imageset │ │ │ ├── 062034071103845.png │ │ │ └── Contents.json │ │ ├── bg.imageset │ │ │ ├── 062034172824838.png │ │ │ └── Contents.json │ │ ├── bottom.imageset │ │ │ ├── 062034279235987.png │ │ │ └── Contents.json │ │ ├── mask.imageset │ │ │ ├── Contents.json │ │ │ └── mask.jpg │ │ ├── maskLayerContents.imageset │ │ │ ├── Contents.json │ │ │ └── maskLayerContents@2x.png │ │ └── top.imageset │ │ │ ├── 062034343292897.png │ │ │ └── Contents.json │ │ ├── Base.lproj │ │ ├── LaunchScreen.storyboard │ │ └── Main.storyboard │ │ ├── BaseTableController.h │ │ ├── BaseTableController.m │ │ ├── BlurryTableController.h │ │ ├── BlurryTableController.m │ │ ├── CAGradientLayerColorController.h │ │ ├── CAGradientLayerColorController.m │ │ ├── CAGradientLayerColorDifferenceController.h │ │ ├── CAGradientLayerColorDifferenceController.m │ │ ├── CAGradientLayerController.h │ │ ├── CAGradientLayerController.m │ │ ├── CAGradientLayerTableController.h │ │ ├── CAGradientLayerTableController.m │ │ ├── CAGrdientLayerController.h │ │ ├── CAGrdientLayerController.m │ │ ├── CALayerDowndController.h │ │ ├── CALayerDowndController.m │ │ ├── CALayerImageController.h │ │ ├── CALayerImageController.m │ │ ├── CALayerMaskController.h │ │ ├── CALayerMaskController.m │ │ ├── CALayerTableController.h │ │ ├── CALayerTableController.m │ │ ├── CAShapeLayerCircularController.h │ │ ├── CAShapeLayerCircularController.m │ │ ├── CAShapeLayerController.h │ │ ├── CAShapeLayerController.m │ │ ├── CAShapeLayerCurveViewController.h │ │ ├── CAShapeLayerCurveViewController.m │ │ ├── CAShapeLayerDottedlineController.h │ │ ├── CAShapeLayerDottedlineController.m │ │ ├── CAShapeLayerLineController.h │ │ ├── CAShapeLayerLineController.m │ │ ├── CAShapeLayerStrokeController.h │ │ ├── CAShapeLayerStrokeController.m │ │ ├── CAShapeLayerTableController.h │ │ ├── CAShapeLayerTableController.m │ │ ├── CAShpeLayerBezierController.h │ │ ├── CAShpeLayerBezierController.m │ │ ├── CircleView.h │ │ ├── CircleView.m │ │ ├── ColorImageView.h │ │ ├── ColorImageView.m │ │ ├── FadeStringView.h │ │ ├── FadeStringView.m │ │ ├── Info.plist │ │ ├── MaskLabelController.h │ │ ├── MaskLabelController.m │ │ ├── MaskTableController.h │ │ ├── MaskTableController.m │ │ ├── MaskViewAnimationController.h │ │ ├── MaskViewAnimationController.m │ │ ├── MaskViewController.h │ │ ├── MaskViewController.m │ │ ├── NavigationController.h │ │ ├── NavigationController.m │ │ ├── ProgressView.h │ │ ├── ProgressView.m │ │ ├── SafariViewController.h │ │ ├── SafariViewController.m │ │ ├── ViewController.h │ │ ├── ViewController.m │ │ ├── main.m │ │ └── mask.jpg ├── layer │ ├── layer.xcodeproj │ │ ├── project.pbxproj │ │ ├── project.xcworkspace │ │ │ └── contents.xcworkspacedata │ │ └── xcuserdata │ │ │ └── adobe.xcuserdatad │ │ │ └── xcschemes │ │ │ ├── layer.xcscheme │ │ │ └── xcschememanagement.plist │ └── layer │ │ ├── AppDelegate.h │ │ ├── AppDelegate.m │ │ ├── Assets.xcassets │ │ └── AppIcon.appiconset │ │ │ └── Contents.json │ │ ├── Base.lproj │ │ ├── LaunchScreen.storyboard │ │ └── Main.storyboard │ │ ├── Info.plist │ │ ├── ViewController.h │ │ ├── ViewController.m │ │ └── main.m └── 姓名排序 │ ├── name.png │ ├── 姓名排序.xcodeproj │ ├── project.pbxproj │ ├── project.xcworkspace │ │ ├── contents.xcworkspacedata │ │ └── xcuserdata │ │ │ └── adobe.xcuserdatad │ │ │ └── UserInterfaceState.xcuserstate │ └── xcuserdata │ │ └── adobe.xcuserdatad │ │ ├── xcdebugger │ │ └── Breakpoints_v2.xcbkptlist │ │ └── xcschemes │ │ ├── xcschememanagement.plist │ │ └── 姓名排序.xcscheme │ └── 姓名排序 │ ├── AppDelegate.h │ ├── AppDelegate.m │ ├── Assets.xcassets │ └── AppIcon.appiconset │ │ └── Contents.json │ ├── Base.lproj │ ├── LaunchScreen.storyboard │ └── Main.storyboard │ ├── Info.plist │ ├── User.h │ ├── User.m │ ├── ViewController.h │ ├── ViewController.m │ ├── main.m │ └── user.plist ├── LearnSwift ├── Swift Bool类型.md ├── Swift 元祖.md ├── Swift 可选值Optionals.md ├── Swift 基本数据类型.md ├── Swift 字符和字符串.md ├── Swift 常量与变量.md ├── Swift 类型转化.md ├── 可选类型.md ├── 属性.md ├── 枚举.md ├── 类.md └── 结构体.md ├── MD ├── Demo.md ├── Git.md ├── Swift.md ├── UIKit.md ├── iOS与JS交互.md ├── iOS文章.md ├── 分类.md ├── 加密:解密:签名.md ├── 动画.md ├── 即时通迅:IM.md ├── 多线程.md ├── 工作常用.md ├── 文档整理.md ├── 第三方.md ├── 蓝牙.md ├── 转场动画.md ├── 逆向.md └── 音视频.md ├── README.md ├── Tool ├── Category │ └── UIColor-Extension.swift └── PageView │ ├── PageView.xcodeproj │ ├── project.pbxproj │ ├── project.xcworkspace │ │ ├── contents.xcworkspacedata │ │ └── xcuserdata │ │ │ └── adobe.xcuserdatad │ │ │ └── UserInterfaceState.xcuserstate │ └── xcuserdata │ │ └── adobe.xcuserdatad │ │ ├── xcdebugger │ │ └── Breakpoints_v2.xcbkptlist │ │ └── xcschemes │ │ ├── PageView.xcscheme │ │ └── xcschememanagement.plist │ └── PageView │ ├── AppDelegate.swift │ ├── Assets.xcassets │ └── AppIcon.appiconset │ │ └── Contents.json │ ├── Base.lproj │ ├── LaunchScreen.storyboard │ └── Main.storyboard │ ├── ContentView.swift │ ├── Info.plist │ ├── NavigationController.swift │ ├── PageStyle.swift │ ├── PageView.swift │ ├── TitleView.swift │ ├── UIColor-Extension.swift │ └── ViewController.swift ├── 思维导图 ├── AppDelegate生命周期.mindnode │ ├── QuickLook │ │ └── Preview.jpg │ ├── contents.xml │ ├── resources │ │ ├── 8CEA1B1D-6EE0-452E-8959-4F121026DC72.png │ │ ├── A24B88FF-88E1-4B11-A903-BA68E6CCA842.png │ │ ├── AAF2B97C-6D42-403D-BD46-5BB2F05A0732.png │ │ ├── CA2D4F32-D3B5-441B-A959-C3AEF7DEB950.png │ │ └── E32ED5E2-8B3C-48D4-AB73-4AD308E9FC00.png │ ├── style.mindnodestyle │ │ ├── contents.xml │ │ └── metadata.plist │ └── viewState.plist ├── AppDelegate生命周期.pdf ├── CAEmitterLayer.mindnode ├── CALayer.mindnode ├── Copy&MutableCopy.mindnode │ ├── QuickLook │ │ └── Preview.jpg │ ├── contents.xml │ ├── resources │ │ ├── 331870A2-DC47-4E6B-8F74-B299391EEC6F.png │ │ └── CEF85C20-532B-437F-9C5F-581B01CE0A8D.png │ ├── style.mindnodestyle │ │ ├── contents.xml │ │ └── metadata.plist │ └── viewState.plist ├── RunLoop.mindnode │ ├── QuickLook │ │ └── Preview.jpg │ ├── contents.xml │ ├── resources │ │ ├── 8C7B5BE2-7863-4689-BEC2-ED90839EC881.png │ │ ├── A6B22636-CFC2-4AA2-AA46-C46D222C8A9E.png │ │ └── F1BE6F46-7C58-4095-828D-E64D46F55723.png │ ├── style.mindnodestyle │ │ ├── contents.xml │ │ └── metadata.plist │ └── viewState.plist ├── iOS三大事件.mindnode │ ├── QuickLook │ │ └── Preview.jpg │ ├── contents.xml │ ├── resources │ │ ├── 00938F90-8789-41BD-BCE3-5CB001DF1FA3.png │ │ ├── 1D4DEE3A-D61A-4D1B-A25A-764104B3FF2D.png │ │ ├── 286BF2A3-5188-4AE9-BA90-3F473463FAF5.png │ │ ├── 2EBCCA4A-BECD-4F94-90DE-CFB5B0B13EC4.png │ │ ├── 6B49D372-F544-46A6-B777-13973276984B.png │ │ ├── F0C215C4-B442-42E5-A790-3E9779F2207B.png │ │ ├── FA656CBC-AF4B-41FE-82A6-17A65D87DABE.png │ │ └── FD8E97B6-3377-4717-9713-C3193514A139.png │ ├── style.mindnodestyle │ │ ├── contents.xml │ │ └── metadata.plist │ └── viewState.plist ├── 图解HTTP.mindnode │ ├── QuickLook │ │ └── Preview.jpg │ ├── contents.xml │ ├── resources │ │ ├── 00189DF3-B053-4320-ACC6-173A257E42D7.png │ │ ├── 0A3CAE39-964D-4C78-9141-34AC1B2B7D81.png │ │ ├── 0B78555B-7FF4-41E6-B072-330BC2B7BB4B.png │ │ ├── 10A025F2-E976-45C8-97AE-77A5E221FC57.png │ │ ├── 1A7B2982-4603-458E-B565-349D25061289.png │ │ ├── 1B3140CE-BA45-4109-AC46-44BFC7B9DD86.png │ │ ├── 259E18FD-08CE-457D-8B0F-B996FEEF7E99.png │ │ ├── 26524C88-5408-445A-945A-CF79A7B50A03.png │ │ ├── 28E3ABAD-F9E8-4AEC-9C48-40FCBE0FD064.png │ │ ├── 2F8F45F6-BA49-4A1B-B76E-69E900AA7EC3.png │ │ ├── 3A27D361-DA27-4B35-A068-F4988BBA6710.png │ │ ├── 3E93A7DC-5080-475D-B8F7-AD670A6009E0.png │ │ ├── 4176CB96-9CFA-4D28-BFF5-532463346E2F.png │ │ ├── 482CC891-FC19-4FFE-90AF-59C1015DC8DB.png │ │ ├── 4AD2C988-C89E-4E38-B127-A6628C63CC3F.png │ │ ├── 4E076AF8-6EA0-4ABE-9423-B4F1BFB932B8.png │ │ ├── 542D4CA4-59A7-4771-ADFF-607B4CE275DA.png │ │ ├── 5718DC43-5FE2-4544-BBA3-3B1560F0C467.png │ │ ├── 5870EBBF-1B8A-49DE-8843-8A2F4124FEC1.png │ │ ├── 59D8E9B9-AF83-4616-92B7-9AA7D0CBE491.png │ │ ├── 6018755A-67A7-4D67-92DD-C3908CB38326.png │ │ ├── 63E4EB58-8692-43EE-A126-9145D96B2660.png │ │ ├── 68F98501-41FD-4C18-89EE-B517FFA01933.png │ │ ├── 6E52E7CF-AA50-4C86-8719-762C283D2F01.png │ │ ├── 6EC7BE3B-DE48-4629-9EDC-B0C3497C210B.png │ │ ├── 6F8FCD81-53C3-46F9-9AE3-D08B58E059A6.png │ │ ├── 75513122-2C2A-4A4C-A305-676E45FACC2E.png │ │ ├── 7ACBFECB-2F87-44E5-BD10-30FDF3E0AD6E.png │ │ ├── 7F6B0EA6-4BE2-4483-98CF-BB12E8BD7710.png │ │ ├── 82AEDF88-D4E8-4240-B37E-D6F3244650D3.png │ │ ├── 89114D61-7A6B-4656-A000-267970E18E5A.png │ │ ├── 8B79B7F5-35AA-46B5-9B48-7AFF6A34BFCB.png │ │ ├── 8E4566D9-3F15-48D1-A57D-E70A10C7CB31.png │ │ ├── 97310E04-7541-47FE-B7C6-6E8190528EF0.png │ │ ├── 9A942D20-8DF2-4B8D-A1C5-1056A7B8F65E.png │ │ ├── A1550E33-7DBE-4730-AB5C-38B486F83AE6.png │ │ ├── A164E889-0A76-4931-8C54-DDEDD04BC4B1.png │ │ ├── A7D454CA-FDBF-43E2-B7FB-6277DC70AD03.png │ │ ├── AC380662-CB30-4003-A1BD-222F16BF23FD.png │ │ ├── AFF10443-3C6A-4BB9-8BD7-B6A5D3CE461E.png │ │ ├── B3139537-0891-4132-BD52-85619274C0B4.png │ │ ├── B5BFEAA6-0A54-4F28-B107-D0695EF50177.png │ │ ├── BD0D4A82-11FA-4838-B24B-B79B922DE773.png │ │ ├── C18E5FCE-CEEF-47FF-B864-5D586790C2EA.png │ │ ├── C783B3BD-EDDD-4769-BA96-F8F0850A67FA.png │ │ ├── C85536CC-9F79-46C5-9453-40FC4AE0CD91.png │ │ ├── CBAB2C2E-F6B4-48CE-A831-969A9BE9C29E.png │ │ ├── CD865714-1689-458A-9793-95663F101491.png │ │ ├── CF1DDC37-5AF0-4355-BC7D-31FE63670333.png │ │ ├── D963F07A-298D-4818-BFCE-D89AF909E467.png │ │ ├── DEDBF90A-92BC-443B-A676-CBF894A673F6.png │ │ ├── E3179893-E186-4166-B79D-3CEF9ED34725.png │ │ ├── E387EC0A-7AC4-4DFD-940E-081DE31BDEE5.png │ │ ├── E4AF8E9C-DDF8-4A2D-9863-DE326F2E1B10.png │ │ ├── E616929B-DC04-496A-8D3D-A102789B8DCB.png │ │ ├── E9061505-178D-44A7-AC99-ED694557CD93.png │ │ ├── EB6861D7-F28F-46AA-B19A-6FAC935F04F4.png │ │ ├── EC77DD08-0609-4529-9348-AA7F1AD3F70B.png │ │ ├── F2C3CC03-9172-49BE-B01C-EF04C2FD114D.png │ │ ├── F82D20CB-C406-4D7A-AE7E-7901D085B10C.png │ │ ├── FC84482F-8CB7-4DC4-90B0-2515ADB2D940.png │ │ ├── FD8206A0-9F77-4B24-AE3E-B17E9860EB47.png │ │ ├── FDC164D0-8F0E-4AFD-9DF1-20BA0D3DE78F.png │ │ └── FDDC95B2-63D6-4886-977E-36B6C9A5DB22.png │ ├── style.mindnodestyle │ │ ├── contents.xml │ │ └── metadata.plist │ └── viewState.plist ├── 归档&反归档.mindnode ├── 数据加密,HTTPS,线上充值原理.mindnode │ ├── QuickLook │ │ └── Preview.jpg │ ├── contents.xml │ ├── resources │ │ ├── 1D12FEF8-5D08-462A-B37B-1A732A01965A.png │ │ ├── 22C9FF24-803D-44C0-AF4F-FE455506D060.png │ │ ├── 2AF33E45-378C-4A37-8B15-7DCDBC965DCB.png │ │ ├── 6BFC8AD7-7B42-4E39-AF99-DF4E33EE6641.png │ │ ├── BBFC95CD-DB40-4EF3-9AA6-88AC0E6B42BB.png │ │ └── C5D3B954-623A-4481-93C6-3968049D0E67.png │ ├── style.mindnodestyle │ │ ├── contents.xml │ │ └── metadata.plist │ └── viewState.plist └── 数据持久化.mindnode └── 文章 ├── iOS appDelegate 生命周期.md ├── CocoaPods ├── 5C4BE0A6-834D-4340-96D4-3902BD9312FD.png ├── Snip20170224_11.png ├── Snip20170224_12.png └── 使用CocoaPods管理本地库.md ├── iOS知识树.md ├── iOS静态库,动态库与Framework.md └── 截屏并重命名保存到任意路径下.md /Demo/POP/POP.xcodeproj/project.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /Demo/POP/POP.xcodeproj/project.xcworkspace/xcuserdata/adobe.xcuserdatad/UserInterfaceState.xcuserstate: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Halowl/iOSDev/0b1b3c2df94f939a422283e8505a476e684b443a/Demo/POP/POP.xcodeproj/project.xcworkspace/xcuserdata/adobe.xcuserdatad/UserInterfaceState.xcuserstate -------------------------------------------------------------------------------- /Demo/POP/POP.xcodeproj/xcuserdata/adobe.xcuserdatad/xcschemes/xcschememanagement.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | SchemeUserState 6 | 7 | POP.xcscheme 8 | 9 | orderHint 10 | 0 11 | 12 | 13 | SuppressBuildableAutocreation 14 | 15 | 983AD03F1EE803690058AE69 16 | 17 | primary 18 | 19 | 20 | 21 | 22 | 23 | -------------------------------------------------------------------------------- /Demo/POP/POP/Assets.xcassets/AppIcon.appiconset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "iphone", 5 | "size" : "20x20", 6 | "scale" : "2x" 7 | }, 8 | { 9 | "idiom" : "iphone", 10 | "size" : "20x20", 11 | "scale" : "3x" 12 | }, 13 | { 14 | "idiom" : "iphone", 15 | "size" : "29x29", 16 | "scale" : "2x" 17 | }, 18 | { 19 | "idiom" : "iphone", 20 | "size" : "29x29", 21 | "scale" : "3x" 22 | }, 23 | { 24 | "idiom" : "iphone", 25 | "size" : "40x40", 26 | "scale" : "2x" 27 | }, 28 | { 29 | "idiom" : "iphone", 30 | "size" : "40x40", 31 | "scale" : "3x" 32 | }, 33 | { 34 | "idiom" : "iphone", 35 | "size" : "60x60", 36 | "scale" : "2x" 37 | }, 38 | { 39 | "idiom" : "iphone", 40 | "size" : "60x60", 41 | "scale" : "3x" 42 | }, 43 | { 44 | "idiom" : "ipad", 45 | "size" : "20x20", 46 | "scale" : "1x" 47 | }, 48 | { 49 | "idiom" : "ipad", 50 | "size" : "20x20", 51 | "scale" : "2x" 52 | }, 53 | { 54 | "idiom" : "ipad", 55 | "size" : "29x29", 56 | "scale" : "1x" 57 | }, 58 | { 59 | "idiom" : "ipad", 60 | "size" : "29x29", 61 | "scale" : "2x" 62 | }, 63 | { 64 | "idiom" : "ipad", 65 | "size" : "40x40", 66 | "scale" : "1x" 67 | }, 68 | { 69 | "idiom" : "ipad", 70 | "size" : "40x40", 71 | "scale" : "2x" 72 | }, 73 | { 74 | "idiom" : "ipad", 75 | "size" : "76x76", 76 | "scale" : "1x" 77 | }, 78 | { 79 | "idiom" : "ipad", 80 | "size" : "76x76", 81 | "scale" : "2x" 82 | }, 83 | { 84 | "idiom" : "ipad", 85 | "size" : "83.5x83.5", 86 | "scale" : "2x" 87 | } 88 | ], 89 | "info" : { 90 | "version" : 1, 91 | "author" : "xcode" 92 | } 93 | } -------------------------------------------------------------------------------- /Demo/POP/POP/Base.lproj/LaunchScreen.storyboard: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | -------------------------------------------------------------------------------- /Demo/POP/POP/Base.lproj/Main.storyboard: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | -------------------------------------------------------------------------------- /Demo/POP/POP/Dog.swift: -------------------------------------------------------------------------------- 1 | // 2 | // Dog.swift 3 | // POP 4 | // 5 | // Created by Adobe on 2017/6/7. 6 | // Copyright © 2017年 龚. All rights reserved. 7 | // 8 | 9 | import UIKit 10 | 11 | class Dog: NSObject,RunProtocol { 12 | func eat() { 13 | print("eating") 14 | } 15 | 16 | } 17 | -------------------------------------------------------------------------------- /Demo/POP/POP/HomeViewController.swift: -------------------------------------------------------------------------------- 1 | // 2 | // HomeViewController.swift 3 | // POP 4 | // 5 | // Created by Adobe on 2017/6/7. 6 | // Copyright © 2017年 龚. All rights reserved. 7 | // 8 | 9 | import UIKit 10 | 11 | class HomeViewController: UIViewController,TitlePortocol { 12 | 13 | override func viewDidLoad() { 14 | super.viewDidLoad() 15 | let dog = Dog() 16 | dog.runing() 17 | dog.eat() 18 | 19 | self.setTitle() 20 | setupUI() 21 | } 22 | 23 | 24 | } 25 | 26 | extension HomeViewController{ 27 | 28 | fileprivate func setupUI(){ 29 | let view = TestView() 30 | view.setBackGroudColor() 31 | } 32 | 33 | } 34 | -------------------------------------------------------------------------------- /Demo/POP/POP/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | $(DEVELOPMENT_LANGUAGE) 7 | CFBundleExecutable 8 | $(EXECUTABLE_NAME) 9 | CFBundleIdentifier 10 | $(PRODUCT_BUNDLE_IDENTIFIER) 11 | CFBundleInfoDictionaryVersion 12 | 6.0 13 | CFBundleName 14 | $(PRODUCT_NAME) 15 | CFBundlePackageType 16 | APPL 17 | CFBundleShortVersionString 18 | 1.0 19 | CFBundleVersion 20 | 1 21 | LSRequiresIPhoneOS 22 | 23 | UILaunchStoryboardName 24 | LaunchScreen 25 | UIMainStoryboardFile 26 | Main 27 | UIRequiredDeviceCapabilities 28 | 29 | armv7 30 | 31 | UISupportedInterfaceOrientations 32 | 33 | UIInterfaceOrientationPortrait 34 | UIInterfaceOrientationLandscapeLeft 35 | UIInterfaceOrientationLandscapeRight 36 | 37 | UISupportedInterfaceOrientations~ipad 38 | 39 | UIInterfaceOrientationPortrait 40 | UIInterfaceOrientationPortraitUpsideDown 41 | UIInterfaceOrientationLandscapeLeft 42 | UIInterfaceOrientationLandscapeRight 43 | 44 | 45 | 46 | -------------------------------------------------------------------------------- /Demo/POP/POP/Protocol.swift: -------------------------------------------------------------------------------- 1 | // 2 | // Protocol.swift 3 | // POP 4 | // 5 | // Created by Adobe on 2017/6/7. 6 | // Copyright © 2017年 龚. All rights reserved. 7 | // 8 | 9 | import UIKit 10 | protocol RunProtocol { 11 | // MARK: - 这种需要自己实现方法 12 | func eat() 13 | // var name:String{get} 14 | 15 | } 16 | // MARK: - 任意的对象都可以使用此方法 17 | extension RunProtocol{ 18 | 19 | func runing(){ 20 | print("runing") 21 | } 22 | } 23 | 24 | protocol BlackgroudColorProtocol { 25 | 26 | } 27 | 28 | // MARK: - 只有是UIView或者它的子类才能使用此方法 29 | extension BlackgroudColorProtocol where Self : UIView { 30 | 31 | func setBackGroudColor(){ 32 | self.backgroundColor = UIColor.orange 33 | print(UIColor.orange) 34 | } 35 | } 36 | 37 | // MARK: - 只有是UIViewController或者它的子类才能使用协议 38 | protocol TitlePortocol where Self : UIViewController { 39 | 40 | } 41 | 42 | extension TitlePortocol{ 43 | func setTitle(){ 44 | self.title = "JJAdobe" 45 | print("JJAdobe") 46 | } 47 | } 48 | 49 | -------------------------------------------------------------------------------- /Demo/POP/POP/TestView.swift: -------------------------------------------------------------------------------- 1 | // 2 | // TestView.swift 3 | // POP 4 | // 5 | // Created by Adobe on 2017/6/7. 6 | // Copyright © 2017年 龚. All rights reserved. 7 | // 8 | 9 | import UIKit 10 | 11 | class TestView: UIView ,BlackgroudColorProtocol{ 12 | 13 | 14 | 15 | } 16 | -------------------------------------------------------------------------------- /Demo/Path/Path.xcodeproj/project.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /Demo/Path/Path.xcodeproj/xcuserdata/adobe.xcuserdatad/xcschemes/xcschememanagement.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | SchemeUserState 6 | 7 | Path.xcscheme 8 | 9 | orderHint 10 | 0 11 | 12 | 13 | SuppressBuildableAutocreation 14 | 15 | 980C8F831DF863AA00AFACF5 16 | 17 | primary 18 | 19 | 20 | 21 | 22 | 23 | -------------------------------------------------------------------------------- /Demo/Path/Path/AppDelegate.h: -------------------------------------------------------------------------------- 1 | // 2 | // AppDelegate.h 3 | // Patch 4 | // 5 | // Created by adobe on 2016/12/7. 6 | // Copyright © 2016年 啊啦大大. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface AppDelegate : UIResponder 12 | 13 | @property (strong, nonatomic) UIWindow *window; 14 | 15 | 16 | @end 17 | 18 | -------------------------------------------------------------------------------- /Demo/Path/Path/Assets.xcassets/AppIcon.appiconset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "iphone", 5 | "size" : "20x20", 6 | "scale" : "2x" 7 | }, 8 | { 9 | "idiom" : "iphone", 10 | "size" : "20x20", 11 | "scale" : "3x" 12 | }, 13 | { 14 | "idiom" : "iphone", 15 | "size" : "29x29", 16 | "scale" : "2x" 17 | }, 18 | { 19 | "idiom" : "iphone", 20 | "size" : "29x29", 21 | "scale" : "3x" 22 | }, 23 | { 24 | "idiom" : "iphone", 25 | "size" : "40x40", 26 | "scale" : "2x" 27 | }, 28 | { 29 | "idiom" : "iphone", 30 | "size" : "40x40", 31 | "scale" : "3x" 32 | }, 33 | { 34 | "idiom" : "iphone", 35 | "size" : "60x60", 36 | "scale" : "2x" 37 | }, 38 | { 39 | "idiom" : "iphone", 40 | "size" : "60x60", 41 | "scale" : "3x" 42 | }, 43 | { 44 | "idiom" : "ipad", 45 | "size" : "20x20", 46 | "scale" : "1x" 47 | }, 48 | { 49 | "idiom" : "ipad", 50 | "size" : "20x20", 51 | "scale" : "2x" 52 | }, 53 | { 54 | "idiom" : "ipad", 55 | "size" : "29x29", 56 | "scale" : "1x" 57 | }, 58 | { 59 | "idiom" : "ipad", 60 | "size" : "29x29", 61 | "scale" : "2x" 62 | }, 63 | { 64 | "idiom" : "ipad", 65 | "size" : "40x40", 66 | "scale" : "1x" 67 | }, 68 | { 69 | "idiom" : "ipad", 70 | "size" : "40x40", 71 | "scale" : "2x" 72 | }, 73 | { 74 | "idiom" : "ipad", 75 | "size" : "76x76", 76 | "scale" : "1x" 77 | }, 78 | { 79 | "idiom" : "ipad", 80 | "size" : "76x76", 81 | "scale" : "2x" 82 | }, 83 | { 84 | "idiom" : "ipad", 85 | "size" : "83.5x83.5", 86 | "scale" : "2x" 87 | } 88 | ], 89 | "info" : { 90 | "version" : 1, 91 | "author" : "xcode" 92 | } 93 | } -------------------------------------------------------------------------------- /Demo/Path/Path/Assets.xcassets/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "info" : { 3 | "version" : 1, 4 | "author" : "xcode" 5 | } 6 | } -------------------------------------------------------------------------------- /Demo/Path/Path/Assets.xcassets/Images/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "info" : { 3 | "version" : 1, 4 | "author" : "xcode" 5 | } 6 | } -------------------------------------------------------------------------------- /Demo/Path/Path/Assets.xcassets/Images/Default-flat.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x" 6 | }, 7 | { 8 | "idiom" : "universal", 9 | "filename" : "Default-flat@2x.png", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "scale" : "3x" 15 | } 16 | ], 17 | "info" : { 18 | "version" : 1, 19 | "author" : "xcode" 20 | }, 21 | "properties" : { 22 | "template-rendering-intent" : "original" 23 | } 24 | } -------------------------------------------------------------------------------- /Demo/Path/Path/Assets.xcassets/Images/Default-flat.imageset/Default-flat@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Halowl/iOSDev/0b1b3c2df94f939a422283e8505a476e684b443a/Demo/Path/Path/Assets.xcassets/Images/Default-flat.imageset/Default-flat@2x.png -------------------------------------------------------------------------------- /Demo/Path/Path/Assets.xcassets/Images/chooser-button-input-highlighted.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "filename" : "chooser-button-input-highlighted.png", 6 | "scale" : "1x" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "filename" : "chooser-button-input-highlighted@2x.png", 11 | "scale" : "2x" 12 | }, 13 | { 14 | "idiom" : "universal", 15 | "scale" : "3x" 16 | } 17 | ], 18 | "info" : { 19 | "version" : 1, 20 | "author" : "xcode" 21 | }, 22 | "properties" : { 23 | "template-rendering-intent" : "original" 24 | } 25 | } -------------------------------------------------------------------------------- /Demo/Path/Path/Assets.xcassets/Images/chooser-button-input-highlighted.imageset/chooser-button-input-highlighted.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Halowl/iOSDev/0b1b3c2df94f939a422283e8505a476e684b443a/Demo/Path/Path/Assets.xcassets/Images/chooser-button-input-highlighted.imageset/chooser-button-input-highlighted.png -------------------------------------------------------------------------------- /Demo/Path/Path/Assets.xcassets/Images/chooser-button-input-highlighted.imageset/chooser-button-input-highlighted@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Halowl/iOSDev/0b1b3c2df94f939a422283e8505a476e684b443a/Demo/Path/Path/Assets.xcassets/Images/chooser-button-input-highlighted.imageset/chooser-button-input-highlighted@2x.png -------------------------------------------------------------------------------- /Demo/Path/Path/Assets.xcassets/Images/chooser-button-input.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "filename" : "chooser-button-input.png", 6 | "scale" : "1x" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "filename" : "chooser-button-input@2x.png", 11 | "scale" : "2x" 12 | }, 13 | { 14 | "idiom" : "universal", 15 | "scale" : "3x" 16 | } 17 | ], 18 | "info" : { 19 | "version" : 1, 20 | "author" : "xcode" 21 | }, 22 | "properties" : { 23 | "template-rendering-intent" : "original" 24 | } 25 | } -------------------------------------------------------------------------------- /Demo/Path/Path/Assets.xcassets/Images/chooser-button-input.imageset/chooser-button-input.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Halowl/iOSDev/0b1b3c2df94f939a422283e8505a476e684b443a/Demo/Path/Path/Assets.xcassets/Images/chooser-button-input.imageset/chooser-button-input.png -------------------------------------------------------------------------------- /Demo/Path/Path/Assets.xcassets/Images/chooser-button-input.imageset/chooser-button-input@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Halowl/iOSDev/0b1b3c2df94f939a422283e8505a476e684b443a/Demo/Path/Path/Assets.xcassets/Images/chooser-button-input.imageset/chooser-button-input@2x.png -------------------------------------------------------------------------------- /Demo/Path/Path/Assets.xcassets/Images/chooser-button-tab-highlighted.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "filename" : "chooser-button-tab-highlighted.png", 6 | "scale" : "1x" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "filename" : "chooser-button-tab-highlighted@2x.png", 11 | "scale" : "2x" 12 | }, 13 | { 14 | "idiom" : "universal", 15 | "scale" : "3x" 16 | } 17 | ], 18 | "info" : { 19 | "version" : 1, 20 | "author" : "xcode" 21 | }, 22 | "properties" : { 23 | "template-rendering-intent" : "original" 24 | } 25 | } -------------------------------------------------------------------------------- /Demo/Path/Path/Assets.xcassets/Images/chooser-button-tab-highlighted.imageset/chooser-button-tab-highlighted.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Halowl/iOSDev/0b1b3c2df94f939a422283e8505a476e684b443a/Demo/Path/Path/Assets.xcassets/Images/chooser-button-tab-highlighted.imageset/chooser-button-tab-highlighted.png -------------------------------------------------------------------------------- /Demo/Path/Path/Assets.xcassets/Images/chooser-button-tab-highlighted.imageset/chooser-button-tab-highlighted@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Halowl/iOSDev/0b1b3c2df94f939a422283e8505a476e684b443a/Demo/Path/Path/Assets.xcassets/Images/chooser-button-tab-highlighted.imageset/chooser-button-tab-highlighted@2x.png -------------------------------------------------------------------------------- /Demo/Path/Path/Assets.xcassets/Images/chooser-button-tab.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "filename" : "chooser-button-tab.png", 6 | "scale" : "1x" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "filename" : "chooser-button-tab@2x.png", 11 | "scale" : "2x" 12 | }, 13 | { 14 | "idiom" : "universal", 15 | "scale" : "3x" 16 | } 17 | ], 18 | "info" : { 19 | "version" : 1, 20 | "author" : "xcode" 21 | }, 22 | "properties" : { 23 | "template-rendering-intent" : "original" 24 | } 25 | } -------------------------------------------------------------------------------- /Demo/Path/Path/Assets.xcassets/Images/chooser-button-tab.imageset/chooser-button-tab.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Halowl/iOSDev/0b1b3c2df94f939a422283e8505a476e684b443a/Demo/Path/Path/Assets.xcassets/Images/chooser-button-tab.imageset/chooser-button-tab.png -------------------------------------------------------------------------------- /Demo/Path/Path/Assets.xcassets/Images/chooser-button-tab.imageset/chooser-button-tab@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Halowl/iOSDev/0b1b3c2df94f939a422283e8505a476e684b443a/Demo/Path/Path/Assets.xcassets/Images/chooser-button-tab.imageset/chooser-button-tab@2x.png -------------------------------------------------------------------------------- /Demo/Path/Path/Assets.xcassets/Images/chooser-moment-button-highlighted.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "filename" : "chooser-moment-button-highlighted.png", 6 | "scale" : "1x" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "filename" : "chooser-moment-button-highlighted@2x.png", 11 | "scale" : "2x" 12 | }, 13 | { 14 | "idiom" : "universal", 15 | "scale" : "3x" 16 | } 17 | ], 18 | "info" : { 19 | "version" : 1, 20 | "author" : "xcode" 21 | }, 22 | "properties" : { 23 | "template-rendering-intent" : "original" 24 | } 25 | } -------------------------------------------------------------------------------- /Demo/Path/Path/Assets.xcassets/Images/chooser-moment-button-highlighted.imageset/chooser-moment-button-highlighted.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Halowl/iOSDev/0b1b3c2df94f939a422283e8505a476e684b443a/Demo/Path/Path/Assets.xcassets/Images/chooser-moment-button-highlighted.imageset/chooser-moment-button-highlighted.png -------------------------------------------------------------------------------- /Demo/Path/Path/Assets.xcassets/Images/chooser-moment-button-highlighted.imageset/chooser-moment-button-highlighted@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Halowl/iOSDev/0b1b3c2df94f939a422283e8505a476e684b443a/Demo/Path/Path/Assets.xcassets/Images/chooser-moment-button-highlighted.imageset/chooser-moment-button-highlighted@2x.png -------------------------------------------------------------------------------- /Demo/Path/Path/Assets.xcassets/Images/chooser-moment-button.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "filename" : "chooser-moment-button.png", 6 | "scale" : "1x" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "filename" : "chooser-moment-button@2x.png", 11 | "scale" : "2x" 12 | }, 13 | { 14 | "idiom" : "universal", 15 | "scale" : "3x" 16 | } 17 | ], 18 | "info" : { 19 | "version" : 1, 20 | "author" : "xcode" 21 | }, 22 | "properties" : { 23 | "template-rendering-intent" : "original" 24 | } 25 | } -------------------------------------------------------------------------------- /Demo/Path/Path/Assets.xcassets/Images/chooser-moment-button.imageset/chooser-moment-button.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Halowl/iOSDev/0b1b3c2df94f939a422283e8505a476e684b443a/Demo/Path/Path/Assets.xcassets/Images/chooser-moment-button.imageset/chooser-moment-button.png -------------------------------------------------------------------------------- /Demo/Path/Path/Assets.xcassets/Images/chooser-moment-button.imageset/chooser-moment-button@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Halowl/iOSDev/0b1b3c2df94f939a422283e8505a476e684b443a/Demo/Path/Path/Assets.xcassets/Images/chooser-moment-button.imageset/chooser-moment-button@2x.png -------------------------------------------------------------------------------- /Demo/Path/Path/Assets.xcassets/Images/chooser-moment-icon-camera-highlighted.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "filename" : "chooser-moment-icon-camera-highlighted.png", 6 | "scale" : "1x" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "filename" : "chooser-moment-icon-camera-highlighted@2x.png", 11 | "scale" : "2x" 12 | }, 13 | { 14 | "idiom" : "universal", 15 | "scale" : "3x" 16 | } 17 | ], 18 | "info" : { 19 | "version" : 1, 20 | "author" : "xcode" 21 | }, 22 | "properties" : { 23 | "template-rendering-intent" : "original" 24 | } 25 | } -------------------------------------------------------------------------------- /Demo/Path/Path/Assets.xcassets/Images/chooser-moment-icon-camera-highlighted.imageset/chooser-moment-icon-camera-highlighted.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Halowl/iOSDev/0b1b3c2df94f939a422283e8505a476e684b443a/Demo/Path/Path/Assets.xcassets/Images/chooser-moment-icon-camera-highlighted.imageset/chooser-moment-icon-camera-highlighted.png -------------------------------------------------------------------------------- /Demo/Path/Path/Assets.xcassets/Images/chooser-moment-icon-camera-highlighted.imageset/chooser-moment-icon-camera-highlighted@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Halowl/iOSDev/0b1b3c2df94f939a422283e8505a476e684b443a/Demo/Path/Path/Assets.xcassets/Images/chooser-moment-icon-camera-highlighted.imageset/chooser-moment-icon-camera-highlighted@2x.png -------------------------------------------------------------------------------- /Demo/Path/Path/Assets.xcassets/Images/chooser-moment-icon-camera.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "filename" : "chooser-moment-icon-camera.png", 6 | "scale" : "1x" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "filename" : "chooser-moment-icon-camera@2x.png", 11 | "scale" : "2x" 12 | }, 13 | { 14 | "idiom" : "universal", 15 | "scale" : "3x" 16 | } 17 | ], 18 | "info" : { 19 | "version" : 1, 20 | "author" : "xcode" 21 | }, 22 | "properties" : { 23 | "template-rendering-intent" : "original" 24 | } 25 | } -------------------------------------------------------------------------------- /Demo/Path/Path/Assets.xcassets/Images/chooser-moment-icon-camera.imageset/chooser-moment-icon-camera.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Halowl/iOSDev/0b1b3c2df94f939a422283e8505a476e684b443a/Demo/Path/Path/Assets.xcassets/Images/chooser-moment-icon-camera.imageset/chooser-moment-icon-camera.png -------------------------------------------------------------------------------- /Demo/Path/Path/Assets.xcassets/Images/chooser-moment-icon-camera.imageset/chooser-moment-icon-camera@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Halowl/iOSDev/0b1b3c2df94f939a422283e8505a476e684b443a/Demo/Path/Path/Assets.xcassets/Images/chooser-moment-icon-camera.imageset/chooser-moment-icon-camera@2x.png -------------------------------------------------------------------------------- /Demo/Path/Path/Assets.xcassets/Images/chooser-moment-icon-music-highlighted.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "filename" : "chooser-moment-icon-music-highlighted.png", 6 | "scale" : "1x" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "filename" : "chooser-moment-icon-music-highlighted@2x.png", 11 | "scale" : "2x" 12 | }, 13 | { 14 | "idiom" : "universal", 15 | "scale" : "3x" 16 | } 17 | ], 18 | "info" : { 19 | "version" : 1, 20 | "author" : "xcode" 21 | }, 22 | "properties" : { 23 | "template-rendering-intent" : "original" 24 | } 25 | } -------------------------------------------------------------------------------- /Demo/Path/Path/Assets.xcassets/Images/chooser-moment-icon-music-highlighted.imageset/chooser-moment-icon-music-highlighted.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Halowl/iOSDev/0b1b3c2df94f939a422283e8505a476e684b443a/Demo/Path/Path/Assets.xcassets/Images/chooser-moment-icon-music-highlighted.imageset/chooser-moment-icon-music-highlighted.png -------------------------------------------------------------------------------- /Demo/Path/Path/Assets.xcassets/Images/chooser-moment-icon-music-highlighted.imageset/chooser-moment-icon-music-highlighted@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Halowl/iOSDev/0b1b3c2df94f939a422283e8505a476e684b443a/Demo/Path/Path/Assets.xcassets/Images/chooser-moment-icon-music-highlighted.imageset/chooser-moment-icon-music-highlighted@2x.png -------------------------------------------------------------------------------- /Demo/Path/Path/Assets.xcassets/Images/chooser-moment-icon-music.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "filename" : "chooser-moment-icon-music.png", 6 | "scale" : "1x" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "filename" : "chooser-moment-icon-music@2x.png", 11 | "scale" : "2x" 12 | }, 13 | { 14 | "idiom" : "universal", 15 | "scale" : "3x" 16 | } 17 | ], 18 | "info" : { 19 | "version" : 1, 20 | "author" : "xcode" 21 | }, 22 | "properties" : { 23 | "template-rendering-intent" : "original" 24 | } 25 | } -------------------------------------------------------------------------------- /Demo/Path/Path/Assets.xcassets/Images/chooser-moment-icon-music.imageset/chooser-moment-icon-music.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Halowl/iOSDev/0b1b3c2df94f939a422283e8505a476e684b443a/Demo/Path/Path/Assets.xcassets/Images/chooser-moment-icon-music.imageset/chooser-moment-icon-music.png -------------------------------------------------------------------------------- /Demo/Path/Path/Assets.xcassets/Images/chooser-moment-icon-music.imageset/chooser-moment-icon-music@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Halowl/iOSDev/0b1b3c2df94f939a422283e8505a476e684b443a/Demo/Path/Path/Assets.xcassets/Images/chooser-moment-icon-music.imageset/chooser-moment-icon-music@2x.png -------------------------------------------------------------------------------- /Demo/Path/Path/Assets.xcassets/Images/chooser-moment-icon-place-highlighted.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "filename" : "chooser-moment-icon-place-highlighted.png", 6 | "scale" : "1x" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "filename" : "chooser-moment-icon-place-highlighted@2x.png", 11 | "scale" : "2x" 12 | }, 13 | { 14 | "idiom" : "universal", 15 | "scale" : "3x" 16 | } 17 | ], 18 | "info" : { 19 | "version" : 1, 20 | "author" : "xcode" 21 | }, 22 | "properties" : { 23 | "template-rendering-intent" : "original" 24 | } 25 | } -------------------------------------------------------------------------------- /Demo/Path/Path/Assets.xcassets/Images/chooser-moment-icon-place-highlighted.imageset/chooser-moment-icon-place-highlighted.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Halowl/iOSDev/0b1b3c2df94f939a422283e8505a476e684b443a/Demo/Path/Path/Assets.xcassets/Images/chooser-moment-icon-place-highlighted.imageset/chooser-moment-icon-place-highlighted.png -------------------------------------------------------------------------------- /Demo/Path/Path/Assets.xcassets/Images/chooser-moment-icon-place-highlighted.imageset/chooser-moment-icon-place-highlighted@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Halowl/iOSDev/0b1b3c2df94f939a422283e8505a476e684b443a/Demo/Path/Path/Assets.xcassets/Images/chooser-moment-icon-place-highlighted.imageset/chooser-moment-icon-place-highlighted@2x.png -------------------------------------------------------------------------------- /Demo/Path/Path/Assets.xcassets/Images/chooser-moment-icon-place.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "filename" : "chooser-moment-icon-place.png", 6 | "scale" : "1x" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "filename" : "chooser-moment-icon-place@2x.png", 11 | "scale" : "2x" 12 | }, 13 | { 14 | "idiom" : "universal", 15 | "scale" : "3x" 16 | } 17 | ], 18 | "info" : { 19 | "version" : 1, 20 | "author" : "xcode" 21 | }, 22 | "properties" : { 23 | "template-rendering-intent" : "original" 24 | } 25 | } -------------------------------------------------------------------------------- /Demo/Path/Path/Assets.xcassets/Images/chooser-moment-icon-place.imageset/chooser-moment-icon-place.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Halowl/iOSDev/0b1b3c2df94f939a422283e8505a476e684b443a/Demo/Path/Path/Assets.xcassets/Images/chooser-moment-icon-place.imageset/chooser-moment-icon-place.png -------------------------------------------------------------------------------- /Demo/Path/Path/Assets.xcassets/Images/chooser-moment-icon-place.imageset/chooser-moment-icon-place@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Halowl/iOSDev/0b1b3c2df94f939a422283e8505a476e684b443a/Demo/Path/Path/Assets.xcassets/Images/chooser-moment-icon-place.imageset/chooser-moment-icon-place@2x.png -------------------------------------------------------------------------------- /Demo/Path/Path/Assets.xcassets/Images/chooser-moment-icon-sleep-highlighted.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "filename" : "chooser-moment-icon-sleep-highlighted.png", 6 | "scale" : "1x" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "filename" : "chooser-moment-icon-sleep-highlighted@2x.png", 11 | "scale" : "2x" 12 | }, 13 | { 14 | "idiom" : "universal", 15 | "scale" : "3x" 16 | } 17 | ], 18 | "info" : { 19 | "version" : 1, 20 | "author" : "xcode" 21 | }, 22 | "properties" : { 23 | "template-rendering-intent" : "original" 24 | } 25 | } -------------------------------------------------------------------------------- /Demo/Path/Path/Assets.xcassets/Images/chooser-moment-icon-sleep-highlighted.imageset/chooser-moment-icon-sleep-highlighted.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Halowl/iOSDev/0b1b3c2df94f939a422283e8505a476e684b443a/Demo/Path/Path/Assets.xcassets/Images/chooser-moment-icon-sleep-highlighted.imageset/chooser-moment-icon-sleep-highlighted.png -------------------------------------------------------------------------------- /Demo/Path/Path/Assets.xcassets/Images/chooser-moment-icon-sleep-highlighted.imageset/chooser-moment-icon-sleep-highlighted@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Halowl/iOSDev/0b1b3c2df94f939a422283e8505a476e684b443a/Demo/Path/Path/Assets.xcassets/Images/chooser-moment-icon-sleep-highlighted.imageset/chooser-moment-icon-sleep-highlighted@2x.png -------------------------------------------------------------------------------- /Demo/Path/Path/Assets.xcassets/Images/chooser-moment-icon-sleep.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "filename" : "chooser-moment-icon-sleep.png", 6 | "scale" : "1x" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "filename" : "chooser-moment-icon-sleep@2x.png", 11 | "scale" : "2x" 12 | }, 13 | { 14 | "idiom" : "universal", 15 | "scale" : "3x" 16 | } 17 | ], 18 | "info" : { 19 | "version" : 1, 20 | "author" : "xcode" 21 | }, 22 | "properties" : { 23 | "template-rendering-intent" : "original" 24 | } 25 | } -------------------------------------------------------------------------------- /Demo/Path/Path/Assets.xcassets/Images/chooser-moment-icon-sleep.imageset/chooser-moment-icon-sleep.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Halowl/iOSDev/0b1b3c2df94f939a422283e8505a476e684b443a/Demo/Path/Path/Assets.xcassets/Images/chooser-moment-icon-sleep.imageset/chooser-moment-icon-sleep.png -------------------------------------------------------------------------------- /Demo/Path/Path/Assets.xcassets/Images/chooser-moment-icon-sleep.imageset/chooser-moment-icon-sleep@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Halowl/iOSDev/0b1b3c2df94f939a422283e8505a476e684b443a/Demo/Path/Path/Assets.xcassets/Images/chooser-moment-icon-sleep.imageset/chooser-moment-icon-sleep@2x.png -------------------------------------------------------------------------------- /Demo/Path/Path/Assets.xcassets/Images/chooser-moment-icon-thought-highlighted.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "filename" : "chooser-moment-icon-thought-highlighted.png", 6 | "scale" : "1x" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "filename" : "chooser-moment-icon-thought-highlighted@2x.png", 11 | "scale" : "2x" 12 | }, 13 | { 14 | "idiom" : "universal", 15 | "scale" : "3x" 16 | } 17 | ], 18 | "info" : { 19 | "version" : 1, 20 | "author" : "xcode" 21 | }, 22 | "properties" : { 23 | "template-rendering-intent" : "original" 24 | } 25 | } -------------------------------------------------------------------------------- /Demo/Path/Path/Assets.xcassets/Images/chooser-moment-icon-thought-highlighted.imageset/chooser-moment-icon-thought-highlighted.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Halowl/iOSDev/0b1b3c2df94f939a422283e8505a476e684b443a/Demo/Path/Path/Assets.xcassets/Images/chooser-moment-icon-thought-highlighted.imageset/chooser-moment-icon-thought-highlighted.png -------------------------------------------------------------------------------- /Demo/Path/Path/Assets.xcassets/Images/chooser-moment-icon-thought-highlighted.imageset/chooser-moment-icon-thought-highlighted@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Halowl/iOSDev/0b1b3c2df94f939a422283e8505a476e684b443a/Demo/Path/Path/Assets.xcassets/Images/chooser-moment-icon-thought-highlighted.imageset/chooser-moment-icon-thought-highlighted@2x.png -------------------------------------------------------------------------------- /Demo/Path/Path/Assets.xcassets/Images/chooser-moment-icon-thought.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "filename" : "chooser-moment-icon-thought.png", 6 | "scale" : "1x" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "filename" : "chooser-moment-icon-thought@2x.png", 11 | "scale" : "2x" 12 | }, 13 | { 14 | "idiom" : "universal", 15 | "scale" : "3x" 16 | } 17 | ], 18 | "info" : { 19 | "version" : 1, 20 | "author" : "xcode" 21 | }, 22 | "properties" : { 23 | "template-rendering-intent" : "original" 24 | } 25 | } -------------------------------------------------------------------------------- /Demo/Path/Path/Assets.xcassets/Images/chooser-moment-icon-thought.imageset/chooser-moment-icon-thought.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Halowl/iOSDev/0b1b3c2df94f939a422283e8505a476e684b443a/Demo/Path/Path/Assets.xcassets/Images/chooser-moment-icon-thought.imageset/chooser-moment-icon-thought.png -------------------------------------------------------------------------------- /Demo/Path/Path/Assets.xcassets/Images/chooser-moment-icon-thought.imageset/chooser-moment-icon-thought@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Halowl/iOSDev/0b1b3c2df94f939a422283e8505a476e684b443a/Demo/Path/Path/Assets.xcassets/Images/chooser-moment-icon-thought.imageset/chooser-moment-icon-thought@2x.png -------------------------------------------------------------------------------- /Demo/Path/Path/Assets.xcassets/TabBar/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "info" : { 3 | "version" : 1, 4 | "author" : "xcode" 5 | } 6 | } -------------------------------------------------------------------------------- /Demo/Path/Path/Assets.xcassets/TabBar/account_highlight.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x" 6 | }, 7 | { 8 | "idiom" : "universal", 9 | "filename" : "account_highlight@2x.png", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "scale" : "3x" 15 | } 16 | ], 17 | "info" : { 18 | "version" : 1, 19 | "author" : "xcode" 20 | }, 21 | "properties" : { 22 | "template-rendering-intent" : "original" 23 | } 24 | } -------------------------------------------------------------------------------- /Demo/Path/Path/Assets.xcassets/TabBar/account_highlight.imageset/account_highlight@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Halowl/iOSDev/0b1b3c2df94f939a422283e8505a476e684b443a/Demo/Path/Path/Assets.xcassets/TabBar/account_highlight.imageset/account_highlight@2x.png -------------------------------------------------------------------------------- /Demo/Path/Path/Assets.xcassets/TabBar/account_normal.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x" 6 | }, 7 | { 8 | "idiom" : "universal", 9 | "filename" : "account_normal@2x.png", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "scale" : "3x" 15 | } 16 | ], 17 | "info" : { 18 | "version" : 1, 19 | "author" : "xcode" 20 | }, 21 | "properties" : { 22 | "template-rendering-intent" : "original" 23 | } 24 | } -------------------------------------------------------------------------------- /Demo/Path/Path/Assets.xcassets/TabBar/account_normal.imageset/account_normal@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Halowl/iOSDev/0b1b3c2df94f939a422283e8505a476e684b443a/Demo/Path/Path/Assets.xcassets/TabBar/account_normal.imageset/account_normal@2x.png -------------------------------------------------------------------------------- /Demo/Path/Path/Assets.xcassets/TabBar/fish_highlight.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x" 6 | }, 7 | { 8 | "idiom" : "universal", 9 | "filename" : "fish_highlight@2x.png", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "scale" : "3x" 15 | } 16 | ], 17 | "info" : { 18 | "version" : 1, 19 | "author" : "xcode" 20 | }, 21 | "properties" : { 22 | "template-rendering-intent" : "original" 23 | } 24 | } -------------------------------------------------------------------------------- /Demo/Path/Path/Assets.xcassets/TabBar/fish_highlight.imageset/fish_highlight@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Halowl/iOSDev/0b1b3c2df94f939a422283e8505a476e684b443a/Demo/Path/Path/Assets.xcassets/TabBar/fish_highlight.imageset/fish_highlight@2x.png -------------------------------------------------------------------------------- /Demo/Path/Path/Assets.xcassets/TabBar/fish_normal.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x" 6 | }, 7 | { 8 | "idiom" : "universal", 9 | "filename" : "fish_normal@2x.png", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "scale" : "3x" 15 | } 16 | ], 17 | "info" : { 18 | "version" : 1, 19 | "author" : "xcode" 20 | }, 21 | "properties" : { 22 | "template-rendering-intent" : "original" 23 | } 24 | } -------------------------------------------------------------------------------- /Demo/Path/Path/Assets.xcassets/TabBar/fish_normal.imageset/fish_normal@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Halowl/iOSDev/0b1b3c2df94f939a422283e8505a476e684b443a/Demo/Path/Path/Assets.xcassets/TabBar/fish_normal.imageset/fish_normal@2x.png -------------------------------------------------------------------------------- /Demo/Path/Path/Assets.xcassets/TabBar/home_highlight.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x" 6 | }, 7 | { 8 | "idiom" : "universal", 9 | "filename" : "home_highlight@2x.png", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "scale" : "3x" 15 | } 16 | ], 17 | "info" : { 18 | "version" : 1, 19 | "author" : "xcode" 20 | }, 21 | "properties" : { 22 | "template-rendering-intent" : "original" 23 | } 24 | } -------------------------------------------------------------------------------- /Demo/Path/Path/Assets.xcassets/TabBar/home_highlight.imageset/home_highlight@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Halowl/iOSDev/0b1b3c2df94f939a422283e8505a476e684b443a/Demo/Path/Path/Assets.xcassets/TabBar/home_highlight.imageset/home_highlight@2x.png -------------------------------------------------------------------------------- /Demo/Path/Path/Assets.xcassets/TabBar/home_normal.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x" 6 | }, 7 | { 8 | "idiom" : "universal", 9 | "filename" : "home_normal@2x.png", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "scale" : "3x" 15 | } 16 | ], 17 | "info" : { 18 | "version" : 1, 19 | "author" : "xcode" 20 | }, 21 | "properties" : { 22 | "template-rendering-intent" : "original" 23 | } 24 | } -------------------------------------------------------------------------------- /Demo/Path/Path/Assets.xcassets/TabBar/home_normal.imageset/home_normal@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Halowl/iOSDev/0b1b3c2df94f939a422283e8505a476e684b443a/Demo/Path/Path/Assets.xcassets/TabBar/home_normal.imageset/home_normal@2x.png -------------------------------------------------------------------------------- /Demo/Path/Path/Assets.xcassets/TabBar/message_highlight.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x" 6 | }, 7 | { 8 | "idiom" : "universal", 9 | "filename" : "message_highlight@2x.png", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "scale" : "3x" 15 | } 16 | ], 17 | "info" : { 18 | "version" : 1, 19 | "author" : "xcode" 20 | }, 21 | "properties" : { 22 | "template-rendering-intent" : "original" 23 | } 24 | } -------------------------------------------------------------------------------- /Demo/Path/Path/Assets.xcassets/TabBar/message_highlight.imageset/message_highlight@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Halowl/iOSDev/0b1b3c2df94f939a422283e8505a476e684b443a/Demo/Path/Path/Assets.xcassets/TabBar/message_highlight.imageset/message_highlight@2x.png -------------------------------------------------------------------------------- /Demo/Path/Path/Assets.xcassets/TabBar/message_normal.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x" 6 | }, 7 | { 8 | "idiom" : "universal", 9 | "filename" : "message_normal@2x.png", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "scale" : "3x" 15 | } 16 | ], 17 | "info" : { 18 | "version" : 1, 19 | "author" : "xcode" 20 | }, 21 | "properties" : { 22 | "template-rendering-intent" : "original" 23 | } 24 | } -------------------------------------------------------------------------------- /Demo/Path/Path/Assets.xcassets/TabBar/message_normal.imageset/message_normal@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Halowl/iOSDev/0b1b3c2df94f939a422283e8505a476e684b443a/Demo/Path/Path/Assets.xcassets/TabBar/message_normal.imageset/message_normal@2x.png -------------------------------------------------------------------------------- /Demo/Path/Path/Assets.xcassets/TabBar/mycity_highlight.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x" 6 | }, 7 | { 8 | "idiom" : "universal", 9 | "filename" : "mycity_highlight@2x.png", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "scale" : "3x" 15 | } 16 | ], 17 | "info" : { 18 | "version" : 1, 19 | "author" : "xcode" 20 | }, 21 | "properties" : { 22 | "template-rendering-intent" : "original" 23 | } 24 | } -------------------------------------------------------------------------------- /Demo/Path/Path/Assets.xcassets/TabBar/mycity_highlight.imageset/mycity_highlight@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Halowl/iOSDev/0b1b3c2df94f939a422283e8505a476e684b443a/Demo/Path/Path/Assets.xcassets/TabBar/mycity_highlight.imageset/mycity_highlight@2x.png -------------------------------------------------------------------------------- /Demo/Path/Path/Assets.xcassets/TabBar/mycity_normal.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x" 6 | }, 7 | { 8 | "idiom" : "universal", 9 | "filename" : "mycity_normal@2x.png", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "scale" : "3x" 15 | } 16 | ], 17 | "info" : { 18 | "version" : 1, 19 | "author" : "xcode" 20 | }, 21 | "properties" : { 22 | "template-rendering-intent" : "original" 23 | } 24 | } -------------------------------------------------------------------------------- /Demo/Path/Path/Assets.xcassets/TabBar/mycity_normal.imageset/mycity_normal@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Halowl/iOSDev/0b1b3c2df94f939a422283e8505a476e684b443a/Demo/Path/Path/Assets.xcassets/TabBar/mycity_normal.imageset/mycity_normal@2x.png -------------------------------------------------------------------------------- /Demo/Path/Path/Assets.xcassets/TabBar/post_normal.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x" 6 | }, 7 | { 8 | "idiom" : "universal", 9 | "filename" : "post_normal@2x.png", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "scale" : "3x" 15 | } 16 | ], 17 | "info" : { 18 | "version" : 1, 19 | "author" : "xcode" 20 | }, 21 | "properties" : { 22 | "template-rendering-intent" : "original" 23 | } 24 | } -------------------------------------------------------------------------------- /Demo/Path/Path/Assets.xcassets/TabBar/post_normal.imageset/post_normal@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Halowl/iOSDev/0b1b3c2df94f939a422283e8505a476e684b443a/Demo/Path/Path/Assets.xcassets/TabBar/post_normal.imageset/post_normal@2x.png -------------------------------------------------------------------------------- /Demo/Path/Path/Assets.xcassets/TabBar/tapbar_top_line.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x" 6 | }, 7 | { 8 | "idiom" : "universal", 9 | "filename" : "tapbar_top_line@2x.png", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "scale" : "3x" 15 | } 16 | ], 17 | "info" : { 18 | "version" : 1, 19 | "author" : "xcode" 20 | }, 21 | "properties" : { 22 | "template-rendering-intent" : "original" 23 | } 24 | } -------------------------------------------------------------------------------- /Demo/Path/Path/Assets.xcassets/TabBar/tapbar_top_line.imageset/tapbar_top_line@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Halowl/iOSDev/0b1b3c2df94f939a422283e8505a476e684b443a/Demo/Path/Path/Assets.xcassets/TabBar/tapbar_top_line.imageset/tapbar_top_line@2x.png -------------------------------------------------------------------------------- /Demo/Path/Path/Base.lproj/LaunchScreen.storyboard: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | -------------------------------------------------------------------------------- /Demo/Path/Path/DCPathItemButton.h: -------------------------------------------------------------------------------- 1 | // 2 | // DCPathItemButton.h 3 | // DCPathButton 4 | // 5 | // Created by tang dixi on 31/7/14. 6 | // Copyright (c) 2014 Tangdxi. All rights reserved. 7 | // 8 | 9 | @import UIKit; 10 | 11 | @class DCPathItemButton; 12 | 13 | @protocol DCPathItemButtonDelegate 14 | 15 | - (void)itemButtonTapped:(DCPathItemButton *)itemButton; 16 | 17 | @end 18 | 19 | @interface DCPathItemButton : UIButton 20 | 21 | @property (assign, nonatomic) NSUInteger index; 22 | @property (weak, nonatomic) id delegate; 23 | 24 | - (instancetype)initWithImage:(UIImage *)image 25 | highlightedImage:(UIImage *)highlightedImage 26 | backgroundImage:(UIImage *)backgroundImage 27 | backgroundHighlightedImage:(UIImage *)backgroundHighlightedImage; 28 | 29 | @end 30 | -------------------------------------------------------------------------------- /Demo/Path/Path/DCPathItemButton.m: -------------------------------------------------------------------------------- 1 | // 2 | // DCPathItemButton.m 3 | // DCPathButton 4 | // 5 | // Created by tang dixi on 31/7/14. 6 | // Copyright (c) 2014 Tangdxi. All rights reserved. 7 | // 8 | 9 | #import "DCPathItemButton.h" 10 | 11 | @interface DCPathItemButton () 12 | 13 | @property (strong, nonatomic) UIImageView *backgroundImageView; 14 | 15 | @end 16 | 17 | @implementation DCPathItemButton 18 | 19 | - (instancetype)initWithImage:(UIImage *)image 20 | highlightedImage:(UIImage *)highlightedImage 21 | backgroundImage:(UIImage *)backgroundImage 22 | backgroundHighlightedImage:(UIImage *)backgroundHighlightedImage 23 | { 24 | if (self = [super init]) { 25 | 26 | // Make sure the iteam has a certain frame 27 | // 28 | CGRect itemFrame = CGRectMake(0, 0, backgroundImage.size.width, backgroundImage.size.height); 29 | 30 | if (!backgroundImage || !backgroundHighlightedImage) { 31 | itemFrame = CGRectMake(0, 0, image.size.width, image.size.height); 32 | } 33 | self.frame = itemFrame; 34 | 35 | // Configure the item's image 36 | // 37 | [self setImage:backgroundImage forState:UIControlStateNormal]; 38 | [self setImage:backgroundHighlightedImage forState:UIControlStateHighlighted]; 39 | 40 | // Configure background 41 | // 42 | _backgroundImageView = [[UIImageView alloc]initWithImage:image 43 | highlightedImage:highlightedImage]; 44 | _backgroundImageView.center = CGPointMake(self.bounds.size.width/2, self.bounds.size.height/2); 45 | 46 | [self addSubview:_backgroundImageView]; 47 | 48 | // Add an action for the item button 49 | // 50 | [self addTarget:_delegate action:@selector(itemButtonTapped:) forControlEvents:UIControlEventTouchUpInside]; 51 | 52 | } 53 | return self; 54 | } 55 | 56 | @end 57 | -------------------------------------------------------------------------------- /Demo/Path/Path/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | en 7 | CFBundleExecutable 8 | $(EXECUTABLE_NAME) 9 | CFBundleIdentifier 10 | $(PRODUCT_BUNDLE_IDENTIFIER) 11 | CFBundleInfoDictionaryVersion 12 | 6.0 13 | CFBundleName 14 | $(PRODUCT_NAME) 15 | CFBundlePackageType 16 | APPL 17 | CFBundleShortVersionString 18 | 1.0 19 | CFBundleVersion 20 | 1 21 | LSRequiresIPhoneOS 22 | 23 | UILaunchStoryboardName 24 | LaunchScreen 25 | UIRequiredDeviceCapabilities 26 | 27 | armv7 28 | 29 | UISupportedInterfaceOrientations 30 | 31 | UIInterfaceOrientationPortrait 32 | UIInterfaceOrientationLandscapeLeft 33 | UIInterfaceOrientationLandscapeRight 34 | 35 | UISupportedInterfaceOrientations~ipad 36 | 37 | UIInterfaceOrientationPortrait 38 | UIInterfaceOrientationPortraitUpsideDown 39 | UIInterfaceOrientationLandscapeLeft 40 | UIInterfaceOrientationLandscapeRight 41 | 42 | 43 | 44 | -------------------------------------------------------------------------------- /Demo/Path/Path/JJTabBarController.h: -------------------------------------------------------------------------------- 1 | // 2 | // JJTableController.h 3 | // Patch 4 | // 5 | // Created by adobe on 2016/12/7. 6 | // Copyright © 2016年 啊啦大大. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface JJTabBarController : UITabBarController 12 | 13 | @end 14 | -------------------------------------------------------------------------------- /Demo/Path/Path/ViewController.h: -------------------------------------------------------------------------------- 1 | // 2 | // ViewController.h 3 | // Patch 4 | // 5 | // Created by adobe on 2016/12/7. 6 | // Copyright © 2016年 啊啦大大. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface ViewController : UIViewController 12 | 13 | 14 | @end 15 | 16 | -------------------------------------------------------------------------------- /Demo/Path/Path/ViewController.m: -------------------------------------------------------------------------------- 1 | // 2 | // ViewController.m 3 | // Patch 4 | // 5 | // Created by adobe on 2016/12/7. 6 | // Copyright © 2016年 啊啦大大. All rights reserved. 7 | // 8 | 9 | #import "ViewController.h" 10 | 11 | @interface ViewController () 12 | 13 | @end 14 | 15 | @implementation ViewController 16 | 17 | - (void)viewDidLoad { 18 | [super viewDidLoad]; 19 | self.navigationItem.leftBarButtonItem = [[UIBarButtonItem alloc]initWithTitle:@"back" style:UIBarButtonItemStyleDone target:self action:@selector(back)]; 20 | } 21 | 22 | 23 | - (void)back { 24 | [self dismissViewControllerAnimated:YES completion:nil]; 25 | } 26 | 27 | 28 | @end 29 | -------------------------------------------------------------------------------- /Demo/Path/Path/bloom.caf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Halowl/iOSDev/0b1b3c2df94f939a422283e8505a476e684b443a/Demo/Path/Path/bloom.caf -------------------------------------------------------------------------------- /Demo/Path/Path/fold.caf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Halowl/iOSDev/0b1b3c2df94f939a422283e8505a476e684b443a/Demo/Path/Path/fold.caf -------------------------------------------------------------------------------- /Demo/Path/Path/main.m: -------------------------------------------------------------------------------- 1 | // 2 | // main.m 3 | // Path 4 | // 5 | // Created by adobe on 2016/12/7. 6 | // Copyright © 2016年 啊啦大大. All rights reserved. 7 | // 8 | 9 | #import 10 | #import "AppDelegate.h" 11 | 12 | int main(int argc, char * argv[]) { 13 | @autoreleasepool { 14 | return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class])); 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /Demo/Path/Path/selected.caf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Halowl/iOSDev/0b1b3c2df94f939a422283e8505a476e684b443a/Demo/Path/Path/selected.caf -------------------------------------------------------------------------------- /Demo/Path/path.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Halowl/iOSDev/0b1b3c2df94f939a422283e8505a476e684b443a/Demo/Path/path.gif -------------------------------------------------------------------------------- /Demo/Transition/Transition.xcodeproj/project.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /Demo/Transition/Transition.xcodeproj/xcuserdata/adobe.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | -------------------------------------------------------------------------------- /Demo/Transition/Transition.xcodeproj/xcuserdata/adobe.xcuserdatad/xcschemes/xcschememanagement.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | SchemeUserState 6 | 7 | Transition.xcscheme 8 | 9 | orderHint 10 | 0 11 | 12 | 13 | SuppressBuildableAutocreation 14 | 15 | 986872381EAF3B1B0076D29F 16 | 17 | primary 18 | 19 | 20 | 21 | 22 | 23 | -------------------------------------------------------------------------------- /Demo/Transition/Transition/1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Halowl/iOSDev/0b1b3c2df94f939a422283e8505a476e684b443a/Demo/Transition/Transition/1.png -------------------------------------------------------------------------------- /Demo/Transition/Transition/2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Halowl/iOSDev/0b1b3c2df94f939a422283e8505a476e684b443a/Demo/Transition/Transition/2.png -------------------------------------------------------------------------------- /Demo/Transition/Transition/App.h: -------------------------------------------------------------------------------- 1 | // 2 | // App.h 3 | // Transition 4 | // 5 | // Created by Adobe on 17/5/5. 6 | // Copyright © 2017年 龚. All rights reserved. 7 | // 8 | 9 | #ifndef App_h 10 | #define App_h 11 | 12 | #define IS_iPHONE4 ([UIScreen instancesRespondToSelector:@selector(currentMode)] ? CGSizeEqualToSize(CGSizeMake(640, 960),[[UIScreen mainScreen] currentMode].size): NO) 13 | #define IS_iPHONE5 ([UIScreen instancesRespondToSelector:@selector(currentMode)] ? CGSizeEqualToSize(CGSizeMake(640, 1136),[[UIScreen mainScreen] currentMode].size): NO) 14 | #define IS_iPHONE6 ([UIScreen instancesRespondToSelector:@selector(currentMode)] ? (CGSizeEqualToSize(CGSizeMake(750, 1334),[[UIScreen mainScreen] currentMode].size)): NO) 15 | #define IS_iPHONE6P ([UIScreen instancesRespondToSelector:@selector(currentMode)] ? (CGSizeEqualToSize(CGSizeMake(1242, 2208),[[UIScreen mainScreen] currentMode].size) || CGSizeEqualToSize(CGSizeMake(1125, 2001),[[UIScreen mainScreen] currentMode].size)): NO) 16 | 17 | /* 18 | //.h 19 | extern NSString *const SureShouldShowGuide; 20 | //.m 21 | NSString *const SureShouldShowGuide = @"SureShouldShowGuide"; 22 | */ 23 | 24 | #endif /* App_h */ 25 | -------------------------------------------------------------------------------- /Demo/Transition/Transition/AppDelegate.h: -------------------------------------------------------------------------------- 1 | // 2 | // AppDelegate.h 3 | // Transition 4 | // 5 | // Created by Adobe on 17/4/25. 6 | // Copyright © 2017年 龚. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface AppDelegate : UIResponder 12 | 13 | @property (strong, nonatomic) UIWindow *window; 14 | 15 | 16 | @end 17 | 18 | -------------------------------------------------------------------------------- /Demo/Transition/Transition/Assets.xcassets/1.imageset/1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Halowl/iOSDev/0b1b3c2df94f939a422283e8505a476e684b443a/Demo/Transition/Transition/Assets.xcassets/1.imageset/1.png -------------------------------------------------------------------------------- /Demo/Transition/Transition/Assets.xcassets/1.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "filename" : "1.png", 6 | "scale" : "1x" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "scale" : "3x" 15 | } 16 | ], 17 | "info" : { 18 | "version" : 1, 19 | "author" : "xcode" 20 | } 21 | } -------------------------------------------------------------------------------- /Demo/Transition/Transition/Assets.xcassets/2.imageset/2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Halowl/iOSDev/0b1b3c2df94f939a422283e8505a476e684b443a/Demo/Transition/Transition/Assets.xcassets/2.imageset/2.png -------------------------------------------------------------------------------- /Demo/Transition/Transition/Assets.xcassets/2.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "filename" : "2.png", 6 | "scale" : "1x" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "scale" : "3x" 15 | } 16 | ], 17 | "info" : { 18 | "version" : 1, 19 | "author" : "xcode" 20 | } 21 | } -------------------------------------------------------------------------------- /Demo/Transition/Transition/Assets.xcassets/AppIcon.appiconset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "iphone", 5 | "size" : "20x20", 6 | "scale" : "2x" 7 | }, 8 | { 9 | "idiom" : "iphone", 10 | "size" : "20x20", 11 | "scale" : "3x" 12 | }, 13 | { 14 | "idiom" : "iphone", 15 | "size" : "29x29", 16 | "scale" : "2x" 17 | }, 18 | { 19 | "idiom" : "iphone", 20 | "size" : "29x29", 21 | "scale" : "3x" 22 | }, 23 | { 24 | "idiom" : "iphone", 25 | "size" : "40x40", 26 | "scale" : "2x" 27 | }, 28 | { 29 | "idiom" : "iphone", 30 | "size" : "40x40", 31 | "scale" : "3x" 32 | }, 33 | { 34 | "idiom" : "iphone", 35 | "size" : "60x60", 36 | "scale" : "2x" 37 | }, 38 | { 39 | "idiom" : "iphone", 40 | "size" : "60x60", 41 | "scale" : "3x" 42 | } 43 | ], 44 | "info" : { 45 | "version" : 1, 46 | "author" : "xcode" 47 | } 48 | } -------------------------------------------------------------------------------- /Demo/Transition/Transition/Assets.xcassets/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "info" : { 3 | "version" : 1, 4 | "author" : "xcode" 5 | } 6 | } -------------------------------------------------------------------------------- /Demo/Transition/Transition/Assets.xcassets/base.imageset/062034071103845.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Halowl/iOSDev/0b1b3c2df94f939a422283e8505a476e684b443a/Demo/Transition/Transition/Assets.xcassets/base.imageset/062034071103845.png -------------------------------------------------------------------------------- /Demo/Transition/Transition/Assets.xcassets/base.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "filename" : "062034071103845.png", 6 | "scale" : "1x" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "scale" : "3x" 15 | } 16 | ], 17 | "info" : { 18 | "version" : 1, 19 | "author" : "xcode" 20 | } 21 | } -------------------------------------------------------------------------------- /Demo/Transition/Transition/Assets.xcassets/bg.imageset/062034172824838.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Halowl/iOSDev/0b1b3c2df94f939a422283e8505a476e684b443a/Demo/Transition/Transition/Assets.xcassets/bg.imageset/062034172824838.png -------------------------------------------------------------------------------- /Demo/Transition/Transition/Assets.xcassets/bg.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "filename" : "062034172824838.png", 6 | "scale" : "1x" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "scale" : "3x" 15 | } 16 | ], 17 | "info" : { 18 | "version" : 1, 19 | "author" : "xcode" 20 | } 21 | } -------------------------------------------------------------------------------- /Demo/Transition/Transition/Assets.xcassets/bottom.imageset/062034279235987.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Halowl/iOSDev/0b1b3c2df94f939a422283e8505a476e684b443a/Demo/Transition/Transition/Assets.xcassets/bottom.imageset/062034279235987.png -------------------------------------------------------------------------------- /Demo/Transition/Transition/Assets.xcassets/bottom.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "filename" : "062034279235987.png", 6 | "scale" : "1x" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "scale" : "3x" 15 | } 16 | ], 17 | "info" : { 18 | "version" : 1, 19 | "author" : "xcode" 20 | } 21 | } -------------------------------------------------------------------------------- /Demo/Transition/Transition/Assets.xcassets/mask.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x" 6 | }, 7 | { 8 | "idiom" : "universal", 9 | "filename" : "mask.jpg", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "scale" : "3x" 15 | } 16 | ], 17 | "info" : { 18 | "version" : 1, 19 | "author" : "xcode" 20 | } 21 | } -------------------------------------------------------------------------------- /Demo/Transition/Transition/Assets.xcassets/mask.imageset/mask.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Halowl/iOSDev/0b1b3c2df94f939a422283e8505a476e684b443a/Demo/Transition/Transition/Assets.xcassets/mask.imageset/mask.jpg -------------------------------------------------------------------------------- /Demo/Transition/Transition/Assets.xcassets/maskLayerContents.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x" 6 | }, 7 | { 8 | "idiom" : "universal", 9 | "filename" : "maskLayerContents@2x.png", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "scale" : "3x" 15 | } 16 | ], 17 | "info" : { 18 | "version" : 1, 19 | "author" : "xcode" 20 | } 21 | } -------------------------------------------------------------------------------- /Demo/Transition/Transition/Assets.xcassets/maskLayerContents.imageset/maskLayerContents@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Halowl/iOSDev/0b1b3c2df94f939a422283e8505a476e684b443a/Demo/Transition/Transition/Assets.xcassets/maskLayerContents.imageset/maskLayerContents@2x.png -------------------------------------------------------------------------------- /Demo/Transition/Transition/Assets.xcassets/top.imageset/062034343292897.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Halowl/iOSDev/0b1b3c2df94f939a422283e8505a476e684b443a/Demo/Transition/Transition/Assets.xcassets/top.imageset/062034343292897.png -------------------------------------------------------------------------------- /Demo/Transition/Transition/Assets.xcassets/top.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "filename" : "062034343292897.png", 6 | "scale" : "1x" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "scale" : "3x" 15 | } 16 | ], 17 | "info" : { 18 | "version" : 1, 19 | "author" : "xcode" 20 | } 21 | } -------------------------------------------------------------------------------- /Demo/Transition/Transition/Base.lproj/LaunchScreen.storyboard: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | -------------------------------------------------------------------------------- /Demo/Transition/Transition/BaseTableController.h: -------------------------------------------------------------------------------- 1 | // 2 | // BaseTableController.h 3 | // Transition 4 | // 5 | // Created by Adobe on 17/5/4. 6 | // Copyright © 2017年 龚. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface BaseTableController : UITableViewController 12 | @property (strong,nonatomic)NSArray *dataArray; 13 | @end 14 | -------------------------------------------------------------------------------- /Demo/Transition/Transition/BaseTableController.m: -------------------------------------------------------------------------------- 1 | // 2 | // BaseTableController.m 3 | // Transition 4 | // 5 | // Created by Adobe on 17/5/4. 6 | // Copyright © 2017年 龚. All rights reserved. 7 | // 8 | 9 | #import "BaseTableController.h" 10 | 11 | @interface BaseTableController () 12 | 13 | @end 14 | 15 | static NSString *const CELLID = @"CELLID"; 16 | @implementation BaseTableController 17 | 18 | - (void)viewDidLoad { 19 | [super viewDidLoad]; 20 | 21 | [self.tableView registerClass:[UITableViewCell class] forCellReuseIdentifier:CELLID]; 22 | } 23 | 24 | - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { 25 | 26 | return self.dataArray.count; 27 | } 28 | 29 | 30 | - (UITableViewCell*)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{ 31 | UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CELLID forIndexPath:indexPath]; 32 | cell.textLabel.text = self.dataArray[indexPath.row]; 33 | return cell; 34 | 35 | } 36 | @end 37 | -------------------------------------------------------------------------------- /Demo/Transition/Transition/BlurryTableController.h: -------------------------------------------------------------------------------- 1 | // 2 | // BlurryTableController.h 3 | // Transition 4 | // 5 | // Created by Adobe on 17/5/11. 6 | // Copyright © 2017年 龚. All rights reserved. 7 | // 8 | 9 | #import "BaseTableController.h" 10 | 11 | @interface BlurryTableController : BaseTableController 12 | 13 | @end 14 | -------------------------------------------------------------------------------- /Demo/Transition/Transition/BlurryTableController.m: -------------------------------------------------------------------------------- 1 | 2 | // 3 | // BlurryTableController.m 4 | // Transition 5 | // 6 | // Created by Adobe on 17/5/11. 7 | // Copyright © 2017年 龚. All rights reserved. 8 | // 9 | 10 | #import "BlurryTableController.h" 11 | 12 | @interface BlurryTableController () 13 | 14 | @end 15 | 16 | @implementation BlurryTableController 17 | 18 | - (void)viewDidLoad { 19 | [super viewDidLoad]; 20 | self.dataArray = @[@"CoreImage中的模糊滤镜",@"UIImage+ImageEffects的category 模糊效果",@"iOS8中UIVisualEffectView 模糊效果的使用",@"设计下载图片后自动模糊的控件"]; 21 | } 22 | 23 | 24 | - (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath{ 25 | 26 | switch (indexPath.row) { 27 | case 0: 28 | 29 | break; 30 | 31 | default: 32 | break; 33 | } 34 | 35 | } 36 | @end 37 | -------------------------------------------------------------------------------- /Demo/Transition/Transition/CAGradientLayerColorController.h: -------------------------------------------------------------------------------- 1 | // 2 | // CAGradientLayerColorController.h 3 | // Transition 4 | // 5 | // Created by Adobe on 17/5/8. 6 | // Copyright © 2017年 龚. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface CAGradientLayerColorController : UIViewController 12 | 13 | @end 14 | -------------------------------------------------------------------------------- /Demo/Transition/Transition/CAGradientLayerColorController.m: -------------------------------------------------------------------------------- 1 | // 2 | // CAGradientLayerColorController.m 3 | // Transition 4 | // 5 | // Created by Adobe on 17/5/8. 6 | // Copyright © 2017年 龚. All rights reserved. 7 | // 8 | 9 | #import "CAGradientLayerColorController.h" 10 | #import "ColorImageView.h" 11 | @interface CAGradientLayerColorController () 12 | @property (strong,nonatomic)NSTimer *timer; 13 | @property (strong,nonatomic)ColorImageView *imageView; 14 | @end 15 | 16 | @implementation CAGradientLayerColorController 17 | 18 | 19 | - (void)viewDidLoad { 20 | [super viewDidLoad]; 21 | 22 | ColorImageView *imageView = [[ColorImageView alloc]initWithFrame:CGRectMake(0, 0, 200, 200)]; 23 | imageView.center = self.view.center; 24 | imageView.image = [UIImage imageNamed:@"mask"]; 25 | self.imageView = imageView; 26 | 27 | 28 | [self.view addSubview:imageView]; 29 | 30 | 31 | self.timer = [NSTimer scheduledTimerWithTimeInterval:2.f target:self selector:@selector(animationSEL) userInfo:nil repeats:YES]; 32 | 33 | } 34 | 35 | - (void)animationSEL{ 36 | _imageView.startPoint = CGPointMake(0, 0); 37 | _imageView.endPoint = CGPointMake(0,1); 38 | _imageView.color = [UIColor colorWithRed:arc4random() % 255 / 255.f 39 | green:arc4random() % 255 / 255.f 40 | blue:arc4random() % 255 / 255.f 41 | alpha:1]; 42 | _imageView.location = @[@(arc4random() % 10 / 10.f),@1]; 43 | 44 | } 45 | 46 | @end 47 | -------------------------------------------------------------------------------- /Demo/Transition/Transition/CAGradientLayerColorDifferenceController.h: -------------------------------------------------------------------------------- 1 | // 2 | // CAGradientLayerColorDifferenceController.h 3 | // Transition 4 | // 5 | // Created by Adobe on 17/5/8. 6 | // Copyright © 2017年 龚. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface CAGradientLayerColorDifferenceController : UIViewController 12 | 13 | @end 14 | -------------------------------------------------------------------------------- /Demo/Transition/Transition/CAGradientLayerController.h: -------------------------------------------------------------------------------- 1 | // 2 | // CAGradientLayerController.h 3 | // Transition 4 | // 5 | // Created by adobe on 2017/4/30. 6 | // Copyright © 2017年 龚. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface CAGradientLayerController : UIViewController 12 | 13 | @end 14 | -------------------------------------------------------------------------------- /Demo/Transition/Transition/CAGradientLayerTableController.h: -------------------------------------------------------------------------------- 1 | // 2 | // CAGradientLayerTableController.h 3 | // Transition 4 | // 5 | // Created by adobe on 2017/5/7. 6 | // Copyright © 2017年 龚. All rights reserved. 7 | // 8 | 9 | #import "BaseTableController.h" 10 | 11 | @interface CAGradientLayerTableController : BaseTableController 12 | 13 | @end 14 | -------------------------------------------------------------------------------- /Demo/Transition/Transition/CAGradientLayerTableController.m: -------------------------------------------------------------------------------- 1 | // 2 | // CAGradientLayerTableController.m 3 | // Transition 4 | // 5 | // Created by adobe on 2017/5/7. 6 | // Copyright © 2017年 龚. All rights reserved. 7 | // 8 | 9 | #import "CAGradientLayerTableController.h" 10 | #import "CAGrdientLayerController.h" 11 | #import "CAGradientLayerColorDifferenceController.h" 12 | #import "CAGradientLayerColorController.h" 13 | @interface CAGradientLayerTableController () 14 | 15 | @end 16 | 17 | @implementation CAGradientLayerTableController 18 | 19 | - (void)viewDidLoad { 20 | [super viewDidLoad]; 21 | // @"CAGradientLayer简介", 22 | self.dataArray = @[@"CAGradientLayer坐标系统",@"色差动画的实现",@"用CAGradientLayer封装带色差动画的View"]; 23 | } 24 | 25 | 26 | 27 | - (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath{ 28 | 29 | switch (indexPath.row) { 30 | case 0: 31 | { 32 | CAGrdientLayerController *vc = [[CAGrdientLayerController alloc]init]; 33 | vc.title = self.dataArray[indexPath.row]; 34 | [self.navigationController pushViewController:vc animated:YES]; 35 | } 36 | break; 37 | case 1: 38 | { 39 | CAGradientLayerColorDifferenceController *vc = [[CAGradientLayerColorDifferenceController alloc]init]; 40 | vc.title = self.dataArray[indexPath.row]; 41 | [self.navigationController pushViewController:vc animated:YES]; 42 | } 43 | break; 44 | case 2: 45 | { 46 | CAGradientLayerColorController *vc = [[CAGradientLayerColorController alloc]init]; 47 | vc.title = self.dataArray[indexPath.row]; 48 | [self.navigationController pushViewController:vc animated:YES]; 49 | } 50 | break; 51 | 52 | 53 | default: 54 | break; 55 | } 56 | } 57 | 58 | @end 59 | -------------------------------------------------------------------------------- /Demo/Transition/Transition/CAGrdientLayerController.h: -------------------------------------------------------------------------------- 1 | // 2 | // CAGrdientLayerController.h 3 | // Transition 4 | // 5 | // Created by Adobe on 17/5/8. 6 | // Copyright © 2017年 龚. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface CAGrdientLayerController : UIViewController 12 | 13 | @end 14 | -------------------------------------------------------------------------------- /Demo/Transition/Transition/CAGrdientLayerController.m: -------------------------------------------------------------------------------- 1 | // 2 | // CAGrdientLayerController.m 3 | // Transition 4 | // 5 | // Created by Adobe on 17/5/8. 6 | // Copyright © 2017年 龚. All rights reserved. 7 | // 8 | 9 | #import "CAGrdientLayerController.h" 10 | 11 | @interface CAGrdientLayerController () 12 | 13 | @property (strong,nonatomic)CAGradientLayer *gradientLayer; 14 | @end 15 | 16 | @implementation CAGrdientLayerController 17 | 18 | /* 19 | CAGradientLayer是用于处理渐变色的层结构 20 | CAGradientLayer的渐变色可以做隐式动画 21 | 大部分情况下,CAGradientLayer都是与CAShapeLayer配合使用 22 | CAGraientLayer可以用作png遮罩效果 23 | */ 24 | - (void)viewDidLoad { 25 | [super viewDidLoad]; 26 | [self addLayer]; 27 | } 28 | 29 | 30 | - (void)addLayer{ 31 | self.gradientLayer = [CAGradientLayer layer]; 32 | self.gradientLayer.frame = CGRectMake(0, 0, 200, 200); 33 | self.gradientLayer.position = self.view.center; 34 | self.gradientLayer.borderWidth = 1; 35 | [self.view.layer addSublayer:self.gradientLayer]; 36 | 37 | 38 | self.gradientLayer.colors = @[ 39 | (__bridge id)[UIColor redColor].CGColor, 40 | (__bridge id)[UIColor greenColor].CGColor, 41 | (__bridge id)[UIColor blueColor].CGColor 42 | ]; 43 | self.gradientLayer.startPoint = CGPointMake(0, 0); 44 | self.gradientLayer.endPoint = CGPointMake(1,0); 45 | 46 | self.gradientLayer.locations = @[ 47 | @.25,@.5,@.75 48 | ]; 49 | 50 | [self performSelector:@selector(animationSel) withObject:nil afterDelay:3.f]; 51 | 52 | } 53 | 54 | - (void)animationSel{ 55 | 56 | self.gradientLayer.locations = @[ 57 | @.01,@.5,@.99 58 | ]; 59 | } 60 | 61 | @end 62 | -------------------------------------------------------------------------------- /Demo/Transition/Transition/CALayerDowndController.h: -------------------------------------------------------------------------------- 1 | // 2 | // CALayerDowndController.h 3 | // Transition 4 | // 5 | // Created by Adobe on 17/5/3. 6 | // Copyright © 2017年 龚. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface CALayerDowndController : UIViewController 12 | 13 | @end 14 | -------------------------------------------------------------------------------- /Demo/Transition/Transition/CALayerDowndController.m: -------------------------------------------------------------------------------- 1 | // 2 | // CALayerDowndController.m 3 | // Transition 4 | // 5 | // Created by Adobe on 17/5/3. 6 | // Copyright © 2017年 龚. All rights reserved. 7 | // 8 | 9 | #import "CALayerDowndController.h" 10 | #import "ProgressView.h" 11 | @interface CALayerDowndController () 12 | 13 | @property (strong,nonatomic)NSTimer *timer; 14 | @property (strong,nonatomic)ProgressView *progressView; 15 | @end 16 | 17 | @implementation CALayerDowndController 18 | 19 | - (void)viewDidLoad { 20 | [super viewDidLoad]; 21 | self.view.backgroundColor = [UIColor whiteColor]; 22 | self.title = @"用CALayer定制下载进度条的控件"; 23 | self.progressView = [[ProgressView alloc]initWithFrame:CGRectMake(50, 100, self.view.frame.size.width - 100, 5)]; 24 | self.progressView.layer.borderWidth = 1; 25 | [self.view addSubview:self.progressView]; 26 | 27 | self.timer = [NSTimer scheduledTimerWithTimeInterval:1.f target:self selector:@selector(timerAction) userInfo:nil repeats:YES]; 28 | 29 | [[NSRunLoop currentRunLoop]addTimer:self.timer forMode:NSRunLoopCommonModes]; 30 | 31 | } 32 | 33 | 34 | - (void)timerAction{ 35 | self.progressView.progress = arc4random() % 100 / 100.f; 36 | self.progressView.layerColor = [UIColor orangeColor]; 37 | } 38 | 39 | 40 | @end 41 | -------------------------------------------------------------------------------- /Demo/Transition/Transition/CALayerImageController.h: -------------------------------------------------------------------------------- 1 | // 2 | // CALayerImageController.h 3 | // Transition 4 | // 5 | // Created by Adobe on 17/5/3. 6 | // Copyright © 2017年 龚. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface CALayerImageController : UIViewController 12 | 13 | @end 14 | -------------------------------------------------------------------------------- /Demo/Transition/Transition/CALayerMaskController.h: -------------------------------------------------------------------------------- 1 | // 2 | // CALayerMaskController.h 3 | // Transition 4 | // 5 | // Created by Adobe on 17/5/3. 6 | // Copyright © 2017年 龚. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface CALayerMaskController : UIViewController 12 | 13 | @end 14 | -------------------------------------------------------------------------------- /Demo/Transition/Transition/CALayerTableController.h: -------------------------------------------------------------------------------- 1 | // 2 | // CALayerTableController.h 3 | // Transition 4 | // 5 | // Created by Adobe on 17/5/3. 6 | // Copyright © 2017年 龚. All rights reserved. 7 | // 8 | 9 | #import 10 | #import "BaseTableController.h" 11 | @interface CALayerTableController : BaseTableController 12 | 13 | @end 14 | -------------------------------------------------------------------------------- /Demo/Transition/Transition/CALayerTableController.m: -------------------------------------------------------------------------------- 1 | // 2 | // CALayerTableController.m 3 | // Transition 4 | // 5 | // Created by Adobe on 17/5/3. 6 | // Copyright © 2017年 龚. All rights reserved. 7 | // 8 | 9 | #import "CALayerTableController.h" 10 | #import "CALayerDowndController.h" 11 | #import "CALayerImageController.h" 12 | #import "CALayerMaskController.h" 13 | @interface CALayerTableController () 14 | 15 | @end 16 | 17 | @implementation CALayerTableController 18 | 19 | 20 | - (void)viewDidLoad { 21 | [super viewDidLoad]; 22 | self.dataArray = @[@"用CALayer定制下载进度条的控件",@"用CALayer定制UIImageView淡入淡出切换图片效果",@"用CALayer实现复杂遮罩效果"]; 23 | 24 | 25 | } 26 | 27 | - (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { 28 | switch (indexPath.row) { 29 | case 0: 30 | { 31 | CALayerDowndController *vc = [[CALayerDowndController alloc]init]; 32 | vc.title = self.dataArray[indexPath.row]; 33 | [self.navigationController pushViewController:vc animated:YES]; 34 | } 35 | break; 36 | case 1: 37 | { 38 | CALayerImageController *vc = [[CALayerImageController alloc]init]; 39 | vc.title = self.dataArray[indexPath.row]; 40 | [self.navigationController pushViewController:vc animated:YES]; 41 | } 42 | break; 43 | case 2: 44 | { 45 | CALayerMaskController *vc = [[CALayerMaskController alloc]init]; 46 | vc.title = self.dataArray[indexPath.row]; 47 | [self.navigationController pushViewController:vc animated:YES]; 48 | } 49 | break; 50 | default: 51 | break; 52 | } 53 | 54 | 55 | } 56 | 57 | @end 58 | -------------------------------------------------------------------------------- /Demo/Transition/Transition/CAShapeLayerCircularController.h: -------------------------------------------------------------------------------- 1 | // 2 | // CAShapeLayerCircularController.h 3 | // Transition 4 | // 5 | // Created by Adobe on 17/5/4. 6 | // Copyright © 2017年 龚. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface CAShapeLayerCircularController : UIViewController 12 | 13 | @end 14 | -------------------------------------------------------------------------------- /Demo/Transition/Transition/CAShapeLayerCircularController.m: -------------------------------------------------------------------------------- 1 | // 2 | // CAShapeLayerCircularController.m 3 | // Transition 4 | // 5 | // Created by Adobe on 17/5/4. 6 | // Copyright © 2017年 龚. All rights reserved. 7 | // 8 | 9 | #import "CAShapeLayerCircularController.h" 10 | #import "CircleView.h" 11 | 12 | @interface CAShapeLayerCircularController () 13 | 14 | @property (strong,nonatomic)CircleView *circleView; 15 | @end 16 | 17 | @implementation CAShapeLayerCircularController 18 | 19 | - (void)viewDidLoad { 20 | [super viewDidLoad]; 21 | 22 | 23 | 24 | 25 | CircleView *circleView = [[CircleView alloc]initWithFrame:CGRectMake(0, 0, 200, 200)]; 26 | circleView.center = self.view.center; 27 | circleView.startValue = 0.2f; 28 | circleView.lineWidth = 2; 29 | circleView.strokeColor = [UIColor orangeColor]; 30 | self.circleView = circleView; 31 | [self.view addSubview:circleView]; 32 | 33 | 34 | [self performSelector:@selector(circleAnimation) withObject:nil afterDelay:3.f]; 35 | } 36 | 37 | - (void)circleAnimation{ 38 | 39 | self.circleView.startValue = 1.f; 40 | 41 | } 42 | 43 | @end 44 | -------------------------------------------------------------------------------- /Demo/Transition/Transition/CAShapeLayerController.h: -------------------------------------------------------------------------------- 1 | // 2 | // CAShapeLayerController.h 3 | // Transition 4 | // 5 | // Created by Adobe on 17/5/4. 6 | // Copyright © 2017年 龚. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface CAShapeLayerController : UIViewController 12 | 13 | @end 14 | -------------------------------------------------------------------------------- /Demo/Transition/Transition/CAShapeLayerCurveViewController.h: -------------------------------------------------------------------------------- 1 | // 2 | // CurveViewController.h 3 | // Transition 4 | // 5 | // Created by Adobe on 17/5/5. 6 | // Copyright © 2017年 龚. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface CAShapeLayerCurveViewController : UIViewController 12 | 13 | @end 14 | -------------------------------------------------------------------------------- /Demo/Transition/Transition/CAShapeLayerCurveViewController.m: -------------------------------------------------------------------------------- 1 | // 2 | // CurveViewController.m 3 | // Transition 4 | // 5 | // Created by Adobe on 17/5/5. 6 | // Copyright © 2017年 龚. All rights reserved. 7 | // 8 | 9 | #import "CAShapeLayerCurveViewController.h" 10 | 11 | @interface CAShapeLayerCurveViewController () 12 | 13 | @end 14 | 15 | @implementation CAShapeLayerCurveViewController 16 | 17 | - (void)viewDidLoad { 18 | [super viewDidLoad]; 19 | 20 | [self setupUI]; 21 | } 22 | 23 | 24 | - (void)setupUI{ 25 | 26 | CGPoint startPoint = CGPointMake(50, 300); 27 | CGPoint endPoint = CGPointMake(300, 300); 28 | CGPoint controlPoint = CGPointMake(170, 200); 29 | 30 | CAShapeLayer *shapeLayer = [CAShapeLayer layer]; 31 | shapeLayer.frame = CGRectMake(startPoint.x, startPoint.y, 5, 5); 32 | shapeLayer.backgroundColor = [UIColor orangeColor].CGColor; 33 | 34 | CAShapeLayer *shapeLayer1 = [CAShapeLayer layer]; 35 | shapeLayer1.frame = CGRectMake(endPoint.x, endPoint.y, 5, 5); 36 | shapeLayer1.backgroundColor = [UIColor orangeColor].CGColor; 37 | 38 | CAShapeLayer *shapeLayer2 = [CAShapeLayer layer]; 39 | shapeLayer2.frame = CGRectMake(controlPoint.x, controlPoint.y, 5, 5); 40 | shapeLayer2.backgroundColor = [UIColor orangeColor].CGColor; 41 | 42 | UIBezierPath *path = [UIBezierPath bezierPath]; 43 | CAShapeLayer *layer = [CAShapeLayer layer]; 44 | [path moveToPoint:startPoint]; 45 | [path addQuadCurveToPoint:endPoint controlPoint:controlPoint]; 46 | 47 | layer.path = path.CGPath; 48 | layer.fillColor = [UIColor clearColor].CGColor; 49 | layer.strokeColor = [UIColor blackColor].CGColor; 50 | 51 | [self.view.layer addSublayer:layer]; 52 | [self.view.layer addSublayer:shapeLayer]; 53 | [self.view.layer addSublayer:shapeLayer1]; 54 | [self.view.layer addSublayer:shapeLayer2]; 55 | 56 | } 57 | 58 | @end 59 | -------------------------------------------------------------------------------- /Demo/Transition/Transition/CAShapeLayerDottedlineController.h: -------------------------------------------------------------------------------- 1 | // 2 | // CAShapeLayerDottedlineController.h 3 | // Transition 4 | // 5 | // Created by Adobe on 17/5/5. 6 | // Copyright © 2017年 龚. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface CAShapeLayerDottedlineController : UIViewController 12 | 13 | @end 14 | -------------------------------------------------------------------------------- /Demo/Transition/Transition/CAShapeLayerDottedlineController.m: -------------------------------------------------------------------------------- 1 | // 2 | // CAShapeLayerDottedlineController.m 3 | // Transition 4 | // 5 | // Created by Adobe on 17/5/5. 6 | // Copyright © 2017年 龚. All rights reserved. 7 | // 8 | 9 | #import "CAShapeLayerDottedlineController.h" 10 | 11 | @interface CAShapeLayerDottedlineController () 12 | 13 | @end 14 | 15 | @implementation CAShapeLayerDottedlineController 16 | 17 | - (void)viewDidLoad { 18 | [super viewDidLoad]; 19 | UIBezierPath *path = [UIBezierPath bezierPathWithRect:CGRectMake(100, 100, 200, 100)]; 20 | 21 | CAShapeLayer *shapeLayer = [CAShapeLayer layer]; 22 | shapeLayer.path = path.CGPath; 23 | shapeLayer.strokeColor = [UIColor orangeColor].CGColor; 24 | shapeLayer.fillColor = [UIColor clearColor].CGColor; 25 | shapeLayer.lineWidth = 1; 26 | shapeLayer.lineCap = @"square"; 27 | shapeLayer.lineDashPattern = @[@5,@5]; 28 | [self.view.layer addSublayer:shapeLayer]; 29 | } 30 | 31 | 32 | 33 | @end 34 | -------------------------------------------------------------------------------- /Demo/Transition/Transition/CAShapeLayerLineController.h: -------------------------------------------------------------------------------- 1 | // 2 | // CAShapeLayerLineController.h 3 | // Transition 4 | // 5 | // Created by Adobe on 17/5/5. 6 | // Copyright © 2017年 龚. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface CAShapeLayerLineController : UIViewController 12 | 13 | @end 14 | -------------------------------------------------------------------------------- /Demo/Transition/Transition/CAShapeLayerStrokeController.h: -------------------------------------------------------------------------------- 1 | // 2 | // CAShapeLayerStrokeController.h 3 | // Transition 4 | // 5 | // Created by Adobe on 17/5/4. 6 | // Copyright © 2017年 龚. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface CAShapeLayerStrokeController : UIViewController 12 | 13 | @end 14 | -------------------------------------------------------------------------------- /Demo/Transition/Transition/CAShapeLayerStrokeController.m: -------------------------------------------------------------------------------- 1 | // 2 | // CAShapeLayerStrokeController.m 3 | // Transition 4 | // 5 | // Created by Adobe on 17/5/4. 6 | // Copyright © 2017年 龚. All rights reserved. 7 | // 8 | 9 | #import "CAShapeLayerStrokeController.h" 10 | 11 | @interface CAShapeLayerStrokeController () 12 | @property (strong,nonatomic)CAShapeLayer *shapeLayer; 13 | @property (strong,nonatomic)NSTimer *timer; 14 | @end 15 | 16 | @implementation CAShapeLayerStrokeController 17 | 18 | 19 | /* 20 | StrokeStart与StrokeEnd动画 21 | 1.将ShapeLayer的fillColor设置成透明背景 22 | 2.设置线条的宽度(lineWidth)的值 23 | 3.设置线条的颜色 24 | 4.将StrokeStart值设定为0,然后让StrokeEnd的值变化触发隐式动画 25 | */ 26 | - (void)viewDidLoad { 27 | [super viewDidLoad]; 28 | 29 | UIBezierPath *path = [UIBezierPath bezierPathWithOvalInRect:CGRectMake(100, 100, 200, 200)]; 30 | 31 | CAShapeLayer *shapeLayer = [CAShapeLayer layer]; 32 | shapeLayer.path = path.CGPath; 33 | shapeLayer.fillColor = [UIColor clearColor].CGColor; 34 | shapeLayer.strokeColor = [UIColor orangeColor].CGColor; 35 | shapeLayer.strokeStart = 0; 36 | shapeLayer.strokeEnd = 0; 37 | shapeLayer.lineWidth = 2; 38 | self.shapeLayer = shapeLayer; 39 | [self.view.layer addSublayer:shapeLayer]; 40 | 41 | self.timer = [NSTimer scheduledTimerWithTimeInterval:1.f target:self selector:@selector(timerAction) userInfo:nil repeats:YES]; 42 | 43 | } 44 | 45 | - (void)timerAction{ 46 | CGFloat start = arc4random() % 100 / 100.f ; 47 | CGFloat end = arc4random() % 100 / 100.f ; 48 | 49 | self.shapeLayer.strokeStart = start < end ? start :end; 50 | self.shapeLayer.strokeEnd = start > end ? start :end; 51 | 52 | } 53 | 54 | 55 | @end 56 | -------------------------------------------------------------------------------- /Demo/Transition/Transition/CAShapeLayerTableController.h: -------------------------------------------------------------------------------- 1 | // 2 | // CAShapeLayerTableController.h 3 | // Transition 4 | // 5 | // Created by Adobe on 17/5/4. 6 | // Copyright © 2017年 龚. All rights reserved. 7 | // 8 | 9 | #import "BaseTableController.h" 10 | 11 | @interface CAShapeLayerTableController : BaseTableController 12 | 13 | @end 14 | -------------------------------------------------------------------------------- /Demo/Transition/Transition/CAShpeLayerBezierController.h: -------------------------------------------------------------------------------- 1 | // 2 | // CAShpeLayerBezierController.h 3 | // Transition 4 | // 5 | // Created by Adobe on 17/5/4. 6 | // Copyright © 2017年 龚. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface CAShpeLayerBezierController : UIViewController 12 | 13 | @end 14 | -------------------------------------------------------------------------------- /Demo/Transition/Transition/CircleView.h: -------------------------------------------------------------------------------- 1 | // 2 | // CircleView.h 3 | // Transition 4 | // 5 | // Created by Adobe on 17/5/4. 6 | // Copyright © 2017年 龚. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface CircleView : UIView 12 | @property (assign,nonatomic)CGFloat lineWidth; 13 | @property (assign,nonatomic)CGFloat startValue; 14 | @property (strong,nonatomic)UIColor *strokeColor; 15 | @end 16 | -------------------------------------------------------------------------------- /Demo/Transition/Transition/CircleView.m: -------------------------------------------------------------------------------- 1 | // 2 | // CircleView.m 3 | // Transition 4 | // 5 | // Created by Adobe on 17/5/4. 6 | // Copyright © 2017年 龚. All rights reserved. 7 | // 8 | 9 | #import "CircleView.h" 10 | 11 | @interface CircleView () 12 | @property (strong,nonatomic)CAShapeLayer *shapeLayer; 13 | @end 14 | 15 | @implementation CircleView 16 | 17 | - (instancetype)initWithFrame:(CGRect)frame 18 | { 19 | self = [super initWithFrame:frame]; 20 | if (self) { 21 | self.shapeLayer = [CAShapeLayer layer]; 22 | UIBezierPath *path = [UIBezierPath bezierPathWithOvalInRect:frame]; 23 | self.shapeLayer.path = path.CGPath; 24 | self.shapeLayer.lineWidth = self.lineWidth; 25 | self.shapeLayer.fillColor = [UIColor clearColor].CGColor; 26 | self.shapeLayer.strokeColor = self.strokeColor.CGColor; 27 | self.shapeLayer.strokeEnd = 0; 28 | [self.layer addSublayer:self.shapeLayer]; 29 | 30 | } 31 | return self; 32 | } 33 | 34 | @synthesize lineWidth = _lineWidth; 35 | - (void)setLineWidth:(CGFloat)lineWidth{ 36 | _lineWidth = lineWidth; 37 | self.shapeLayer.lineWidth = self.lineWidth; 38 | } 39 | 40 | - (CGFloat)lineWidth{ 41 | return _lineWidth; 42 | } 43 | 44 | 45 | @synthesize strokeColor = _strokeColor; 46 | - (void)setStrokeColor:(UIColor *)strokeColor{ 47 | _strokeColor = strokeColor; 48 | self.shapeLayer.strokeColor = strokeColor.CGColor; 49 | } 50 | - (UIColor *)strokeColor{ 51 | return _strokeColor; 52 | } 53 | 54 | @synthesize startValue = _startValue; 55 | - (void)setStartValue:(CGFloat)startValue{ 56 | _startValue = startValue; 57 | self.shapeLayer.strokeEnd = startValue; 58 | } 59 | 60 | - (CGFloat)startValue{ 61 | 62 | return _startValue; 63 | } 64 | 65 | @end 66 | -------------------------------------------------------------------------------- /Demo/Transition/Transition/ColorImageView.h: -------------------------------------------------------------------------------- 1 | // 2 | // ColorImageView.h 3 | // Transition 4 | // 5 | // Created by Adobe on 17/5/8. 6 | // Copyright © 2017年 龚. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | 12 | typedef enum : NSUInteger { 13 | UP, 14 | DOWN, 15 | LEFT, 16 | RIGHT 17 | } Direction; 18 | 19 | @interface ColorImageView : UIImageView 20 | 21 | @property (assign,nonatomic)Direction direction; 22 | @property (assign,nonatomic)CGPoint endPoint; 23 | @property (assign,nonatomic)CGPoint startPoint; 24 | @property (strong,nonatomic)UIColor *color; 25 | @property (strong,nonatomic)NSArray *location; 26 | @end 27 | 28 | 29 | /** 30 | 确定几个属性值 31 | 方向 32 | 颜色 33 | 颜色分割点 34 | 确定可以做动画的参数 35 | 重写setter方法实现做动画的效果 36 | */ 37 | -------------------------------------------------------------------------------- /Demo/Transition/Transition/ColorImageView.m: -------------------------------------------------------------------------------- 1 | 2 | // 3 | // ColorImageView.m 4 | // Transition 5 | // 6 | // Created by Adobe on 17/5/8. 7 | // Copyright © 2017年 龚. All rights reserved. 8 | // 9 | 10 | #import "ColorImageView.h" 11 | 12 | @interface ColorImageView () 13 | @property (strong,nonatomic)CAGradientLayer *gradientLayer; 14 | @end 15 | @implementation ColorImageView 16 | 17 | - (instancetype)initWithFrame:(CGRect)frame 18 | { 19 | self = [super initWithFrame:frame]; 20 | if (self) { 21 | self.gradientLayer = [CAGradientLayer layer]; 22 | self.gradientLayer.frame = frame; 23 | [self.layer addSublayer:self.gradientLayer]; 24 | } 25 | return self; 26 | } 27 | 28 | @synthesize color = _color; 29 | - (void)setColor:(UIColor *)color{ 30 | _color = color; 31 | self.gradientLayer.colors = @[ 32 | (__bridge id)[UIColor clearColor].CGColor, 33 | (__bridge id)color.CGColor 34 | ]; 35 | } 36 | 37 | - (UIColor *)color{ 38 | return _color; 39 | } 40 | 41 | @synthesize location = _location; 42 | 43 | - (void)setLocation:(NSArray*)location{ 44 | _location = location; 45 | self.gradientLayer.locations = location; 46 | } 47 | 48 | - (NSArray*)location{ 49 | return _location; 50 | } 51 | 52 | @synthesize startPoint = _startPoint; 53 | - (CGPoint)startPoint{ 54 | return _startPoint; 55 | } 56 | 57 | - (void)setStartPoint:(CGPoint)startPoint{ 58 | _startPoint = startPoint; 59 | self.gradientLayer.startPoint = startPoint; 60 | } 61 | 62 | @synthesize endPoint = _endPoint; 63 | - (void)setEndPoint:(CGPoint)endPoint{ 64 | _endPoint = endPoint; 65 | self.gradientLayer.endPoint = endPoint; 66 | } 67 | 68 | - (CGPoint)endPoint{ 69 | return _endPoint; 70 | } 71 | 72 | 73 | @end 74 | -------------------------------------------------------------------------------- /Demo/Transition/Transition/FadeStringView.h: -------------------------------------------------------------------------------- 1 | // 2 | // FadeStringView.h 3 | // Transition 4 | // 5 | // Created by adobe on 2017/4/30. 6 | // Copyright © 2017年 龚. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface FadeStringView : UIView 12 | 13 | @property (nonatomic,strong)NSString *text; 14 | 15 | - (void)fadeRight; 16 | @end 17 | -------------------------------------------------------------------------------- /Demo/Transition/Transition/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | en 7 | CFBundleExecutable 8 | $(EXECUTABLE_NAME) 9 | CFBundleIdentifier 10 | $(PRODUCT_BUNDLE_IDENTIFIER) 11 | CFBundleInfoDictionaryVersion 12 | 6.0 13 | CFBundleName 14 | $(PRODUCT_NAME) 15 | CFBundlePackageType 16 | APPL 17 | CFBundleShortVersionString 18 | 1.0 19 | CFBundleVersion 20 | 1 21 | LSRequiresIPhoneOS 22 | 23 | UILaunchStoryboardName 24 | LaunchScreen 25 | UIMainStoryboardFile 26 | Main 27 | UIRequiredDeviceCapabilities 28 | 29 | armv7 30 | 31 | UISupportedInterfaceOrientations 32 | 33 | UIInterfaceOrientationPortrait 34 | UIInterfaceOrientationLandscapeLeft 35 | UIInterfaceOrientationLandscapeRight 36 | 37 | 38 | 39 | -------------------------------------------------------------------------------- /Demo/Transition/Transition/MaskLabelController.h: -------------------------------------------------------------------------------- 1 | // 2 | // MaskLabelController.h 3 | // Transition 4 | // 5 | // Created by adobe on 2017/4/30. 6 | // Copyright © 2017年 龚. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface MaskLabelController : UIViewController 12 | 13 | @end 14 | -------------------------------------------------------------------------------- /Demo/Transition/Transition/MaskLabelController.m: -------------------------------------------------------------------------------- 1 | // 2 | // MaskLabelController.m 3 | // Transition 4 | // 5 | // Created by adobe on 2017/4/30. 6 | // Copyright © 2017年 龚. All rights reserved. 7 | // 8 | 9 | #import "MaskLabelController.h" 10 | #import "FadeStringView.h" 11 | @interface MaskLabelController () 12 | 13 | @end 14 | 15 | @implementation MaskLabelController 16 | 17 | - (void)viewDidLoad { 18 | [super viewDidLoad]; 19 | self.view.backgroundColor = [UIColor whiteColor]; 20 | 21 | FadeStringView *fadeString = [[FadeStringView alloc]initWithFrame:self.view.bounds]; 22 | fadeString.text = @"你知不知道"; 23 | [self.view addSubview:fadeString]; 24 | 25 | [fadeString fadeRight]; 26 | 27 | } 28 | 29 | 30 | 31 | @end 32 | -------------------------------------------------------------------------------- /Demo/Transition/Transition/MaskTableController.h: -------------------------------------------------------------------------------- 1 | // 2 | // MaskTableController.h 3 | // Transition 4 | // 5 | // Created by adobe on 2017/4/30. 6 | // Copyright © 2017年 龚. All rights reserved. 7 | // 8 | 9 | #import 10 | #import "BaseTableController.h" 11 | 12 | @interface MaskTableController : BaseTableController 13 | 14 | @end 15 | -------------------------------------------------------------------------------- /Demo/Transition/Transition/MaskViewAnimationController.h: -------------------------------------------------------------------------------- 1 | // 2 | // MaskViewAnimationController.h 3 | // Transition 4 | // 5 | // Created by adobe on 2017/4/29. 6 | // Copyright © 2017年 龚. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface MaskViewAnimationController : UIViewController 12 | 13 | @end 14 | -------------------------------------------------------------------------------- /Demo/Transition/Transition/MaskViewController.h: -------------------------------------------------------------------------------- 1 | // 2 | // MaskViewController.h 3 | // Transition 4 | // 5 | // Created by adobe on 2017/4/29. 6 | // Copyright © 2017年 龚. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface MaskViewController : UIViewController 12 | 13 | @end 14 | -------------------------------------------------------------------------------- /Demo/Transition/Transition/MaskViewController.m: -------------------------------------------------------------------------------- 1 | // 2 | // MaskViewController.m 3 | // Transition 4 | // 5 | // Created by adobe on 2017/4/29. 6 | // Copyright © 2017年 龚. All rights reserved. 7 | // 8 | 9 | #import "MaskViewController.h" 10 | 11 | @interface MaskViewController () 12 | @property (strong,nonatomic)UIImageView *imageView; 13 | @property (strong,nonatomic)UIImageView *maskView; 14 | @property (strong,nonatomic)UIImageView *addImageView; 15 | @end 16 | 17 | @implementation MaskViewController 18 | 19 | - (void)viewDidLoad { 20 | [super viewDidLoad]; 21 | self.view.backgroundColor = [UIColor orangeColor]; 22 | 23 | [self mask]; 24 | } 25 | 26 | - (void)mask{ 27 | CGFloat margin = 100; 28 | self.imageView = [[UIImageView alloc]initWithImage:[UIImage imageNamed:@"mask"]]; 29 | self.imageView.frame = CGRectMake(margin, margin * 0.5, margin, margin); 30 | [self.view addSubview:self.imageView]; 31 | 32 | self.maskView = [[UIImageView alloc]initWithFrame:CGRectMake(margin, CGRectGetMaxY(self.imageView.frame) + 20, margin, margin)]; 33 | self.maskView.image = [UIImage imageNamed:@"top"]; 34 | [self.view addSubview:self.maskView]; 35 | 36 | self.addImageView = [[UIImageView alloc]initWithImage:[UIImage imageNamed:@"mask"]]; 37 | self.addImageView.frame = CGRectMake(margin, CGRectGetMaxY(self.maskView.frame) + 20, margin, margin); 38 | [self.view addSubview:self.addImageView]; 39 | 40 | UIImageView *mas = [[UIImageView alloc]initWithFrame:CGRectMake(0, 0, margin, margin)]; 41 | mas.image = [UIImage imageNamed:@"top"]; 42 | self.addImageView.maskView = mas; 43 | } 44 | 45 | 46 | @end 47 | -------------------------------------------------------------------------------- /Demo/Transition/Transition/NavigationController.h: -------------------------------------------------------------------------------- 1 | // 2 | // NavigationController.h 3 | // Transition 4 | // 5 | // Created by Adobe on 17/5/4. 6 | // Copyright © 2017年 龚. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface NavigationController : UINavigationController 12 | 13 | @end 14 | -------------------------------------------------------------------------------- /Demo/Transition/Transition/NavigationController.m: -------------------------------------------------------------------------------- 1 | // 2 | // NavigationController.m 3 | // Transition 4 | // 5 | // Created by Adobe on 17/5/4. 6 | // Copyright © 2017年 龚. All rights reserved. 7 | // 8 | 9 | #import "NavigationController.h" 10 | 11 | @interface NavigationController () 12 | 13 | @end 14 | 15 | @implementation NavigationController 16 | 17 | - (void)viewDidLoad { 18 | [super viewDidLoad]; 19 | 20 | // 如果滑动移除控制器的功能失效,清空代理(让导航控制器重新设置这个功能) 21 | self.interactivePopGestureRecognizer.delegate = nil; 22 | } 23 | 24 | 25 | - (void)pushViewController:(UIViewController *)viewController animated:(BOOL)animated{ 26 | 27 | // 默认为UIRectEdgeAll,navigationBar 顶部开始 28 | viewController.edgesForExtendedLayout = UIRectEdgeNone; 29 | 30 | if (self.childViewControllers.count > 0) { // 如果push进来的不是第一个控制器 31 | // 隐藏tabbar 32 | 33 | viewController.view.backgroundColor = [UIColor colorWithRed:242/256.0 green:242/256.0 blue:242/256.0 alpha:1.0]; 34 | viewController.hidesBottomBarWhenPushed = YES; 35 | } 36 | // 这句super的push要放在后面, 让viewController可以覆盖上面设置的leftBarButtonItem 37 | [super pushViewController:viewController animated:animated]; 38 | 39 | } 40 | 41 | - (BOOL)hidesBottomBarWhenPushed{ 42 | return YES; 43 | } 44 | 45 | 46 | @end 47 | -------------------------------------------------------------------------------- /Demo/Transition/Transition/ProgressView.h: -------------------------------------------------------------------------------- 1 | // 2 | // ProgressView.h 3 | // Transition 4 | // 5 | // Created by Adobe on 17/5/3. 6 | // Copyright © 2017年 龚. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface ProgressView : UIView 12 | 13 | @property (strong,nonatomic)UIColor *layerColor; 14 | @property (assign,nonatomic)CGFloat progress; 15 | 16 | @end 17 | -------------------------------------------------------------------------------- /Demo/Transition/Transition/ProgressView.m: -------------------------------------------------------------------------------- 1 | // 2 | // ProgressView.m 3 | // Transition 4 | // 5 | // Created by Adobe on 17/5/3. 6 | // Copyright © 2017年 龚. All rights reserved. 7 | // 8 | 9 | #import "ProgressView.h" 10 | 11 | 12 | @interface ProgressView () 13 | @property (strong,nonatomic)CALayer *progroessLayer; 14 | @property (assign,nonatomic)CGFloat currentWidth; 15 | @end 16 | 17 | @implementation ProgressView 18 | 19 | - (instancetype)initWithFrame:(CGRect)frame 20 | { 21 | self = [super initWithFrame:frame]; 22 | if (self) { 23 | self.progroessLayer = [CALayer layer]; 24 | self.progroessLayer.frame = CGRectMake(0, 0, 0, self.frame.size.height); 25 | [self.layer addSublayer:self.progroessLayer]; 26 | 27 | self.currentWidth = frame.size.width; 28 | 29 | } 30 | return self; 31 | } 32 | 33 | @synthesize progress = _progress; 34 | - (void)setProgress:(CGFloat)progress{ 35 | _progress = progress; 36 | if (progress <= 0 ) { 37 | self.progroessLayer.frame = CGRectMake(0, 0, 0, self.frame.size.height); 38 | }else if (progress >= 1){ 39 | self.progroessLayer.frame = CGRectMake(0, 0, self.currentWidth, self.frame.size.height); 40 | }else{ 41 | self.progroessLayer.frame = CGRectMake(0, 0, self.currentWidth * progress, self.frame.size.height); 42 | } 43 | 44 | } 45 | 46 | - (CGFloat)progress{ 47 | return _progress; 48 | } 49 | 50 | 51 | @synthesize layerColor = _layerColor; 52 | - (void)setLayerColor:(UIColor *)layerColor{ 53 | _layerColor = layerColor; 54 | self.progroessLayer.backgroundColor = layerColor.CGColor; 55 | 56 | } 57 | 58 | - (UIColor *)layerColor{ 59 | return _layerColor; 60 | } 61 | @end 62 | -------------------------------------------------------------------------------- /Demo/Transition/Transition/SafariViewController.h: -------------------------------------------------------------------------------- 1 | // 2 | // SFSafariViewController.h 3 | // Transition 4 | // 5 | // Created by Adobe on 17/5/5. 6 | // Copyright © 2017年 龚. All rights reserved. 7 | // 8 | 9 | #import 10 | #import 11 | @interface SafariViewController : SFSafariViewController 12 | 13 | @end 14 | -------------------------------------------------------------------------------- /Demo/Transition/Transition/SafariViewController.m: -------------------------------------------------------------------------------- 1 | // 2 | // SFSafariViewController.m 3 | // Transition 4 | // 5 | // Created by Adobe on 17/5/5. 6 | // Copyright © 2017年 龚. All rights reserved. 7 | // 8 | 9 | #import "SafariViewController.h" 10 | 11 | @implementation SafariViewController 12 | 13 | - (void)viewDidLoad{ 14 | [super viewDidLoad]; 15 | 16 | 17 | } 18 | @end 19 | -------------------------------------------------------------------------------- /Demo/Transition/Transition/ViewController.h: -------------------------------------------------------------------------------- 1 | // 2 | // ViewController.h 3 | // Transition 4 | // 5 | // Created by Adobe on 17/4/25. 6 | // Copyright © 2017年 龚. All rights reserved. 7 | // 8 | 9 | #import 10 | #import "BaseTableController.h" 11 | @interface ViewController :BaseTableController 12 | 13 | 14 | @end 15 | 16 | -------------------------------------------------------------------------------- /Demo/Transition/Transition/main.m: -------------------------------------------------------------------------------- 1 | // 2 | // main.m 3 | // Transition 4 | // 5 | // Created by Adobe on 17/4/25. 6 | // Copyright © 2017年 龚. All rights reserved. 7 | // 8 | 9 | #import 10 | #import "AppDelegate.h" 11 | 12 | int main(int argc, char * argv[]) { 13 | @autoreleasepool { 14 | return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class])); 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /Demo/Transition/Transition/mask.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Halowl/iOSDev/0b1b3c2df94f939a422283e8505a476e684b443a/Demo/Transition/Transition/mask.jpg -------------------------------------------------------------------------------- /Demo/layer/layer.xcodeproj/project.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /Demo/layer/layer.xcodeproj/xcuserdata/adobe.xcuserdatad/xcschemes/xcschememanagement.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | SchemeUserState 6 | 7 | layer.xcscheme 8 | 9 | orderHint 10 | 0 11 | 12 | 13 | SuppressBuildableAutocreation 14 | 15 | 984BEF151DFEDE1A00C6ECE2 16 | 17 | primary 18 | 19 | 20 | 21 | 22 | 23 | -------------------------------------------------------------------------------- /Demo/layer/layer/AppDelegate.h: -------------------------------------------------------------------------------- 1 | // 2 | // AppDelegate.h 3 | // layer 4 | // 5 | // Created by adobe on 2016/12/12. 6 | // Copyright © 2016年 啊啦大大. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface AppDelegate : UIResponder 12 | 13 | @property (strong, nonatomic) UIWindow *window; 14 | 15 | 16 | @end 17 | 18 | -------------------------------------------------------------------------------- /Demo/layer/layer/Assets.xcassets/AppIcon.appiconset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "iphone", 5 | "size" : "29x29", 6 | "scale" : "2x" 7 | }, 8 | { 9 | "idiom" : "iphone", 10 | "size" : "29x29", 11 | "scale" : "3x" 12 | }, 13 | { 14 | "idiom" : "iphone", 15 | "size" : "40x40", 16 | "scale" : "2x" 17 | }, 18 | { 19 | "idiom" : "iphone", 20 | "size" : "40x40", 21 | "scale" : "3x" 22 | }, 23 | { 24 | "idiom" : "iphone", 25 | "size" : "60x60", 26 | "scale" : "2x" 27 | }, 28 | { 29 | "idiom" : "iphone", 30 | "size" : "60x60", 31 | "scale" : "3x" 32 | }, 33 | { 34 | "idiom" : "ipad", 35 | "size" : "29x29", 36 | "scale" : "1x" 37 | }, 38 | { 39 | "idiom" : "ipad", 40 | "size" : "29x29", 41 | "scale" : "2x" 42 | }, 43 | { 44 | "idiom" : "ipad", 45 | "size" : "40x40", 46 | "scale" : "1x" 47 | }, 48 | { 49 | "idiom" : "ipad", 50 | "size" : "40x40", 51 | "scale" : "2x" 52 | }, 53 | { 54 | "idiom" : "ipad", 55 | "size" : "76x76", 56 | "scale" : "1x" 57 | }, 58 | { 59 | "idiom" : "ipad", 60 | "size" : "76x76", 61 | "scale" : "2x" 62 | } 63 | ], 64 | "info" : { 65 | "version" : 1, 66 | "author" : "xcode" 67 | } 68 | } -------------------------------------------------------------------------------- /Demo/layer/layer/Base.lproj/LaunchScreen.storyboard: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | -------------------------------------------------------------------------------- /Demo/layer/layer/Base.lproj/Main.storyboard: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | -------------------------------------------------------------------------------- /Demo/layer/layer/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | en 7 | CFBundleExecutable 8 | $(EXECUTABLE_NAME) 9 | CFBundleIdentifier 10 | $(PRODUCT_BUNDLE_IDENTIFIER) 11 | CFBundleInfoDictionaryVersion 12 | 6.0 13 | CFBundleName 14 | $(PRODUCT_NAME) 15 | CFBundlePackageType 16 | APPL 17 | CFBundleShortVersionString 18 | 1.0 19 | CFBundleVersion 20 | 1 21 | LSRequiresIPhoneOS 22 | 23 | UILaunchStoryboardName 24 | LaunchScreen 25 | UIMainStoryboardFile 26 | Main 27 | UIRequiredDeviceCapabilities 28 | 29 | armv7 30 | 31 | UISupportedInterfaceOrientations 32 | 33 | UIInterfaceOrientationPortrait 34 | UIInterfaceOrientationLandscapeLeft 35 | UIInterfaceOrientationLandscapeRight 36 | 37 | UISupportedInterfaceOrientations~ipad 38 | 39 | UIInterfaceOrientationPortrait 40 | UIInterfaceOrientationPortraitUpsideDown 41 | UIInterfaceOrientationLandscapeLeft 42 | UIInterfaceOrientationLandscapeRight 43 | 44 | 45 | 46 | -------------------------------------------------------------------------------- /Demo/layer/layer/ViewController.h: -------------------------------------------------------------------------------- 1 | // 2 | // ViewController.h 3 | // layer 4 | // 5 | // Created by adobe on 2016/12/12. 6 | // Copyright © 2016年 啊啦大大. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface ViewController : UIViewController 12 | 13 | 14 | @end 15 | 16 | -------------------------------------------------------------------------------- /Demo/layer/layer/main.m: -------------------------------------------------------------------------------- 1 | // 2 | // main.m 3 | // layer 4 | // 5 | // Created by adobe on 2016/12/12. 6 | // Copyright © 2016年 啊啦大大. All rights reserved. 7 | // 8 | 9 | #import 10 | #import "AppDelegate.h" 11 | 12 | int main(int argc, char * argv[]) { 13 | @autoreleasepool { 14 | return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class])); 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /Demo/姓名排序/name.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Halowl/iOSDev/0b1b3c2df94f939a422283e8505a476e684b443a/Demo/姓名排序/name.png -------------------------------------------------------------------------------- /Demo/姓名排序/姓名排序.xcodeproj/project.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /Demo/姓名排序/姓名排序.xcodeproj/project.xcworkspace/xcuserdata/adobe.xcuserdatad/UserInterfaceState.xcuserstate: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Halowl/iOSDev/0b1b3c2df94f939a422283e8505a476e684b443a/Demo/姓名排序/姓名排序.xcodeproj/project.xcworkspace/xcuserdata/adobe.xcuserdatad/UserInterfaceState.xcuserstate -------------------------------------------------------------------------------- /Demo/姓名排序/姓名排序.xcodeproj/xcuserdata/adobe.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | 8 | 14 | 15 | 16 | 17 | 18 | -------------------------------------------------------------------------------- /Demo/姓名排序/姓名排序.xcodeproj/xcuserdata/adobe.xcuserdatad/xcschemes/xcschememanagement.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | SchemeUserState 6 | 7 | 姓名排序.xcscheme 8 | 9 | orderHint 10 | 0 11 | 12 | 13 | SuppressBuildableAutocreation 14 | 15 | 98DE20A41E28B2E30014EDDC 16 | 17 | primary 18 | 19 | 20 | 21 | 22 | 23 | -------------------------------------------------------------------------------- /Demo/姓名排序/姓名排序/AppDelegate.h: -------------------------------------------------------------------------------- 1 | // 2 | // AppDelegate.h 3 | // 姓名排序 4 | // 5 | // Created by Adobe on 17/1/13. 6 | // Copyright © 2017年 龚. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface AppDelegate : UIResponder 12 | 13 | @property (strong, nonatomic) UIWindow *window; 14 | 15 | 16 | @end 17 | 18 | -------------------------------------------------------------------------------- /Demo/姓名排序/姓名排序/Assets.xcassets/AppIcon.appiconset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "iphone", 5 | "size" : "29x29", 6 | "scale" : "2x" 7 | }, 8 | { 9 | "idiom" : "iphone", 10 | "size" : "29x29", 11 | "scale" : "3x" 12 | }, 13 | { 14 | "idiom" : "iphone", 15 | "size" : "40x40", 16 | "scale" : "2x" 17 | }, 18 | { 19 | "idiom" : "iphone", 20 | "size" : "40x40", 21 | "scale" : "3x" 22 | }, 23 | { 24 | "idiom" : "iphone", 25 | "size" : "60x60", 26 | "scale" : "2x" 27 | }, 28 | { 29 | "idiom" : "iphone", 30 | "size" : "60x60", 31 | "scale" : "3x" 32 | } 33 | ], 34 | "info" : { 35 | "version" : 1, 36 | "author" : "xcode" 37 | } 38 | } -------------------------------------------------------------------------------- /Demo/姓名排序/姓名排序/Base.lproj/LaunchScreen.storyboard: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | -------------------------------------------------------------------------------- /Demo/姓名排序/姓名排序/Base.lproj/Main.storyboard: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | -------------------------------------------------------------------------------- /Demo/姓名排序/姓名排序/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | en 7 | CFBundleExecutable 8 | $(EXECUTABLE_NAME) 9 | CFBundleIdentifier 10 | $(PRODUCT_BUNDLE_IDENTIFIER) 11 | CFBundleInfoDictionaryVersion 12 | 6.0 13 | CFBundleName 14 | $(PRODUCT_NAME) 15 | CFBundlePackageType 16 | APPL 17 | CFBundleShortVersionString 18 | 1.0 19 | CFBundleSignature 20 | ???? 21 | CFBundleVersion 22 | 1 23 | LSRequiresIPhoneOS 24 | 25 | UILaunchStoryboardName 26 | LaunchScreen 27 | UIMainStoryboardFile 28 | Main 29 | UIRequiredDeviceCapabilities 30 | 31 | armv7 32 | 33 | UISupportedInterfaceOrientations 34 | 35 | UIInterfaceOrientationPortrait 36 | UIInterfaceOrientationLandscapeLeft 37 | UIInterfaceOrientationLandscapeRight 38 | 39 | 40 | 41 | -------------------------------------------------------------------------------- /Demo/姓名排序/姓名排序/User.h: -------------------------------------------------------------------------------- 1 | // 2 | // User.h 3 | // 姓名排序 4 | // 5 | // Created by Adobe on 17/1/13. 6 | // Copyright © 2017年 龚. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface User : NSObject 12 | @property (copy,nonatomic)NSString *name; 13 | @property (assign,nonatomic)NSInteger phone; 14 | @property (assign,nonatomic)NSInteger uid; 15 | @property (assign,nonatomic)NSInteger age; 16 | 17 | - (instancetype)initWithDictonary:(NSDictionary*)dict; 18 | + (instancetype)initWithDictonary:(NSDictionary*)dict; 19 | @end 20 | -------------------------------------------------------------------------------- /Demo/姓名排序/姓名排序/User.m: -------------------------------------------------------------------------------- 1 | // 2 | // User.m 3 | // 姓名排序 4 | // 5 | // Created by Adobe on 17/1/13. 6 | // Copyright © 2017年 龚. All rights reserved. 7 | // 8 | 9 | #import "User.h" 10 | 11 | @implementation User 12 | 13 | - (instancetype)initWithDictonary:(NSDictionary *)dict{ 14 | if (self = [super init]) { 15 | [self setValuesForKeysWithDictionary:dict]; 16 | } 17 | return self; 18 | } 19 | 20 | + (instancetype)initWithDictonary:(NSDictionary *)dict{ 21 | return [[self alloc]initWithDictonary:dict]; 22 | } 23 | @end 24 | -------------------------------------------------------------------------------- /Demo/姓名排序/姓名排序/ViewController.h: -------------------------------------------------------------------------------- 1 | // 2 | // ViewController.h 3 | // 姓名排序 4 | // 5 | // Created by Adobe on 17/1/13. 6 | // Copyright © 2017年 龚. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface ViewController : UIViewController 12 | 13 | 14 | @end 15 | 16 | -------------------------------------------------------------------------------- /Demo/姓名排序/姓名排序/main.m: -------------------------------------------------------------------------------- 1 | // 2 | // main.m 3 | // 姓名排序 4 | // 5 | // Created by Adobe on 17/1/13. 6 | // Copyright © 2017年 龚. All rights reserved. 7 | // 8 | 9 | #import 10 | #import "AppDelegate.h" 11 | 12 | int main(int argc, char * argv[]) { 13 | @autoreleasepool { 14 | return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class])); 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /LearnSwift/Swift Bool类型.md: -------------------------------------------------------------------------------- 1 | # Swift Bool类型 2 | - C语言和OC并没有真正的Bool类型 3 | - C语言的Bool类型为非0即真 4 | - OC语言的Bool类型是typedef signed char BOOL; 5 | - Swift引入了真正的Bool类型 6 | 7 | ``` 8 | Bool true false 9 | ``` 10 | 11 | 12 | ###if 13 | - Swift中if的条件只能是一个Bool的值或者是返回值是Bool类型的表达式(==/!=/>/<等等) 14 | - OC中if可以是任何整数(非0即真), 但是存在的问题是可能将判断写错, 写成了赋值 if(isOpen = 2) , 在开发中为了避免这个问题有经验的程序员会这样写 if(2 == isOpen)来避免这个问题. 在Swift中很好的解决了这个问题 15 | 16 | ``` 17 | let isOpen = true 18 | //let isOpen = 1; 19 | if isOpen { 20 | print("打开") 21 | }else{ 22 | print("关闭") 23 | } 24 | ``` 25 | 26 | 27 | 28 | 29 | -------------------------------------------------------------------------------- /LearnSwift/Swift 元祖.md: -------------------------------------------------------------------------------- 1 | # Swift 元祖 2 | 3 | ###元祖的概念 4 | - 在其它语言中很找早就有元祖这个概念,但是对于OC程序员来说这是一个新的概念 5 | - 将多个相同或者不同类型的值用一个小括号括起来就是一个元祖 6 | 7 | ``` 8 | let cat = ("xixi",3,5.3) 9 | ``` 10 | - 元祖其实是复合类型,小括号中可以写任何类型 11 | 12 | ``` 13 | let cat: (String, Int, Double) = ("xixi", 3 ,5.3) 14 | ``` 15 | 16 | ###元祖的定义 17 | - 常用方式 18 | 19 | ``` 20 | let cat = ("xixi",3,5.3) 21 | print(cat) 22 | print(cat.0) 23 | print(cat.1) 24 | print(cat.2) 25 | ``` 26 | - 指明应用元祖元素的名称 27 | 28 | ``` 29 | let cat = (name:"xixi",age:3,weight:5.3) 30 | print(cat) 31 | print(cat.name) 32 | print(cat.age) 33 | print(cat.weight) 34 | ``` 35 | - 指定的名称进取元祖对应的值,会将对应位置的值 赋值给对应位置的名称 36 | 37 | ``` 38 | let (name,age,weight) = ("xixi",3,5.3) 39 | print(name) 40 | print(age) 41 | print(weight) 42 | ``` 43 | 44 | - 如果不关心元祖的某个值可以利用_通配符来忽略提取 45 | 46 | ``` 47 | let (name,age,_) = ("xixi",3,5.3) 48 | print(name) 49 | print(age) 50 | ``` 51 | 52 | 53 | -------------------------------------------------------------------------------- /LearnSwift/Swift 可选值Optionals.md: -------------------------------------------------------------------------------- 1 | # Swift 可选值Optionals 2 | 3 | 4 | ###Optionals 5 | - 有值 6 | - 没有值,没有值就是nil 7 | 8 | ``` 9 | //有值 10 | var optValue1:Int = 9 11 | // 没有值 12 | var optValue2:Int? 13 | var optValue3: Int? = nil 14 | ``` 15 | - 使用if语句来判断可选值 16 | 17 | 18 | ``` 19 | var var optValue4:Int ? 20 | if optValue4 != nil{ 21 | print(optValue4) 22 | }else{ 23 | print(optValue4) 24 | } 25 | ``` 26 | ###可选绑定 27 | - 为了更安全的解析可选类型的值,一般情况下使用可选绑定 28 | 29 | ``` 30 | var optValue5:Int? = 9 31 | if let res = optValue5{ 32 | print(res) 33 | } 34 | ``` 35 | - 如上,如果optValue5没有值就不会进行任何操作,如果有值,optValue5就会返回true,就会把optValue5的值赋值给res 36 | 37 | ###强制解析(提取可选类型的值) 38 | 39 | ``` 40 | var optValue6:Int? = 9 41 | let res2:Int = optValue6! 42 | print(res2) 43 | ``` 44 | - 会将optValue6中的值赋值给res2,告诉编译器optValue6一定有值 45 | - 如果强制解析optValue6,但是optValue6没有值,这是就会报错 46 | 47 | 48 | ``` 49 | // 报错 50 | var optValue7:Int? 51 | let res4:Int = optValue7! 52 | print(res4) 53 | ``` 54 | 55 | 56 | -------------------------------------------------------------------------------- /LearnSwift/Swift 基本数据类型.md: -------------------------------------------------------------------------------- 1 | #Swift 基本数据类型 2 | - OC: 3 | - 整型 int intValue = 10; 4 | - 浮点型 double doubleValue = 10.10; float floatValue = 5.1; 5 | - 长 long 6 | - 短 short 7 | - 有符号 signed 8 | - 无符号 unsigned 9 | 10 | ``` 11 | 各种类型的数据的取值范围在不同位的编译器下取值范围不同 12 | ``` 13 | - Swift:注意关键字大写 14 | - 整形 15 | ![](media/14664971594108/14664985085295.jpg) 16 | 17 | - Xcode 中Int的默认值是64bit 的,而 Int64也是64bit 18 | - 参考 19 | - [在 Swift 中我们一般简单地使用 Int 来表示整数,在 iPhone 5 和以下的设备中,这个类型其实等同于 Int32,而在 64 位设备中表示的是 Int64](http://swifter.tips/overflow/) 20 | 21 | - [iOS 和 swift 中常见的 Int、Int8、Int16、Int32和 Int64介绍](http://blog.csdn.net/DearHoneybee/article/details/51212948) 22 | 23 | 24 | ``` 25 | var intValue:Int = 10 26 | //如果按照长度划分,Swift中的长短比OC更加精确 27 | var intValue2:Int8 = 6 28 | var intValue3:Int16 = 7 29 | var intValue4:Int32 = 8 30 | var intValue5:Int64 = 9 31 | ``` 32 | - 浮点型 33 | 34 | ``` 35 | var doubleValue1:Double = 10.10 //表示64位的浮点数 36 | 37 | var doubleValue2:Float = 9.9 // 表示32位的浮点数 38 | ``` 39 | 40 | - 有符号无符号, 默认是有符号的(UInt8/UInt16/UInt32/UInt64) 41 | - var uintValue7:UInt = 10 42 | - 注意: 无符号的数比有符号的取值范围更大, 因为符号位也用来存值 43 | 44 | 45 | ####Swift是类型安全的语言, 如果取值错误会直接报错, 而OC不会 46 | 47 | ``` 48 | 取值不对 49 | OC:unsigned int intValue = -10; 不会报错 50 | Swift:var intValue:UInt = -10 会报错 51 | 溢出: 52 | OC:int intValue = INT_MAX + 1; 不会报错 53 | Swift:var intValue:UInt = UInt.max + 1 会报错 54 | ``` 55 | 56 | 57 | 58 | ``` 59 | 数据类型的相互赋值(隐式类型转换) 60 | OC可以 61 | int intValue = 10; 62 | double doubleValue = intValue; 63 | 64 | Swift:不可以 65 | var intValue:Int = 10 66 | var doubleValue:Double = intValue 67 | 在Swift中“值永远不会被隐式转换为其他类型”(OC中可以隐式类型转换), 以上语句会报错 68 | ``` 69 | 70 | 71 | 72 | -------------------------------------------------------------------------------- /LearnSwift/Swift 常量与变量.md: -------------------------------------------------------------------------------- 1 | # Swift 常量与变量 2 | 3 | **使用let来声明常量,使用var来声明变量** 4 | ###变量 5 | - OC 6 | - 先定义再初始化 **int num; num = 10** 7 | - 定义的同时初始化 **int num = 20** 8 | - swift 9 | - 先定义再初始化 **var num** 10 | - 报错: 没有指定数据类型(type annotation missing in pattern), 在Swift中如果想要先定义一个变量, 以后使用时再初始化必须在定义时告诉编译器变量的类型(类型标注) 11 | 12 | ```objc 13 | var num: Int 14 | num = 10 15 | ``` 16 | - 定义的同时初始化 17 | - 在Swift中如果定义的同时初始化一个变量,可以不用写数据类型, 编译期会根据初始化的值自动推断出变量的类型(其它语言是没有类型推断的) 18 | - 以后在开发中如果在定义的同时初始化就没有必要指定数据类型, 除非需要明确数据类型的长度或者定义时不初始化才需要指定数据类型 19 | 20 | ```objc 21 | var num2: Int = 20 22 | var num3 = 20 23 | ``` 24 | 25 | 26 | 27 | **你可以用任何你喜欢的字符作为常量和变量名,包括 Unicode 字符,常量与变量名不能包含数学符号,箭头,保留的(或者非法的)Unicode 码位,连线与制表符。也不能以数字开头,但是可以在常量与变量名的其他地方包含数字。”** 28 | 29 | ```objc 30 | var 🐶 = 100 31 | var 哈哈 = 300 32 | ``` 33 | 34 | - 错误: 35 | 36 | ```objc 37 | var 3x = 10 38 | var x+-3 = 10 39 | ``` 40 | 41 | 42 | ###常量: 43 | - OC: const int num = 10; 44 | - Swift: let num = 10 45 | - 错误: `let num : Int` 46 | - Swift中的常量必须在定义时初始化(OC可以不初始化), 否则会报错 47 | - 常量的用途: 某些值以后不需要改变 `let num4 = 10` 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | -------------------------------------------------------------------------------- /LearnSwift/Swift 类型转化.md: -------------------------------------------------------------------------------- 1 | # Swift 类型转化 2 | 3 |

Swift不允许隐式类型转换, 但可以使用显示类型转换(强制类型转换)

4 | 5 | - OC: 6 | 7 | ``` 8 | int intValue = 10; 9 | double doubleValue = (double)intValue; 10 | 11 | ``` 12 | 13 | 14 | - Swift: 15 | 16 | ``` 17 | var intValue:Int = 10 18 | var doubleValue:Double 19 | doubleValue = Double(intValue) 20 | // 注意:Double()并不会修改intValue的值, 而是通过intValue的值生成一个临时的值赋值给doubleValue 21 | print(intValue) 22 | print(doubleValue) 23 | 24 | ``` 25 | 26 | 27 | 28 | 29 | -------------------------------------------------------------------------------- /LearnSwift/枚举.md: -------------------------------------------------------------------------------- 1 | # 枚举 2 | 3 | ``` 4 | calss Song : NSObject{ 5 | var title : String 6 | var author : String 7 | var duration : Double 8 | 9 | init(_ title : String, _ author : String , _ duration : Double){ 10 | self.title = title 11 | self.author = author 12 | self.duration = duration 13 | } 14 | } 15 | ``` 16 | 17 | -------------------------------------------------------------------------------- /LearnSwift/类.md: -------------------------------------------------------------------------------- 1 | # 类 2 | 3 | > 4 | 类的基本定义 5 | Swift中的结构体和类非常相似, 但是又有不同之处 6 | 类是具有相同属性和方法的抽象 7 | 格式: 8 | class 类名称 { 9 | 类的属性和方法 10 | } 11 | 12 | 13 | 14 | ``` 15 | class Rect { 16 | var width:Double = 0.0 17 | var height:Double = 0.0 18 | func show() -> Void{ 19 | print("width = \(width) height = \(height)") 20 | } 21 | } 22 | // 类没有逐一构造器 23 | //var r1 = Rect(width: 10.0, height: 10.0) 24 | var r1 = Rect() 25 | r1.show() 26 | var r2 = r1 27 | r2.show() 28 | // 类是引用类型, 结构体之间的赋值其实是将r2指向了r1的存储控件, 所以他们是两个只想同一块存储空间, 修改其中一个会影响到另外一个 29 | r1.width = 99 30 | r1.show() 31 | r2.show() 32 | ``` 33 | 34 | 35 | > 36 | 恒等运算符, 用于判断是否是同一个实例, 也就是是否指向同一块存储空间 37 | === !== 38 | 39 | 40 | 41 | ``` 42 | var r3 = Rect() 43 | if r1 === r3 44 | { 45 | print("指向同一块存储空间") 46 | } 47 | ``` 48 | 49 | 50 | -------------------------------------------------------------------------------- /MD/Git.md: -------------------------------------------------------------------------------- 1 | # Git 2 | - [git - 简明指南](http://rogerdudler.github.io/git-guide/index.zh.html) 3 | - [git 怎样删除远程仓库的某次错误提交?](https://segmentfault.com/q/1010000002898735) 4 | - [为什么Github没有记录你的Contributions](https://segmentfault.com/a/1190000004318632) 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /MD/Swift.md: -------------------------------------------------------------------------------- 1 | # Swift 2 | - [30DaysofSwift](https://github.com/allenwong/30DaysofSwift) 3 | - [Swift_100days](https://github.com/Nododo/Swift_100days) 4 | - [在Objective-C项目中使用swift写的第三方库](http://zcill.com/2016/01/23/%E5%9C%A8OC%E9%A1%B9%E7%9B%AE%E4%B8%AD%E4%BD%BF%E7%94%A8swift%E5%86%99%E7%9A%84%E7%AC%AC%E4%B8%89%E6%96%B9%E5%BA%93/) 5 | - [HandyJSON:Swift语言JSON转Model工具库](https://mp.weixin.qq.com/s?__biz=MzA3ODg4MDk0Ng==&mid=2651112862&idx=1&sn=4b0328b9d92cfc9aa4930831dbbbd2ab) 6 | - [Swift 的元组是精简版结构体?骗你的啦](http://ios.jobbole.com/84916/) 7 | - [“错误”的使用 Swift 中的 Extension](http://swift.gg/2016/05/16/using-swift-extensions/) 8 | - [Swift编程的15个技巧](http://geek.csdn.net/news/detail/58593?hmsr=toutiao.io&utm_medium=toutiao.io&utm_source=toutiao.io) 9 | - [Awesome-Swift-Education](https://github.com/hsavit1/Awesome-Swift-Education) 10 | - [Swift- hangge](http://www.hangge.com/blog/cache/category_72_1.html) 11 | - [Swift 编译优化](https://mp.weixin.qq.com/s/3E-AKVQ2lL6DQG8xRq4IPQ) 12 | 13 | -------------------------------------------------------------------------------- /MD/iOS与JS交互.md: -------------------------------------------------------------------------------- 1 | # iOS与JS交互 2 | 3 | - [Java​Script​Core](http://nshipster.cn/javascriptcore/) 4 | - [iOS下JS与OC互相调用(一)--UIWebView 拦截URL](http://www.jianshu.com/p/7151987f012d) 5 | - [iOS下JS与OC互相调用(二)--WKWebView 拦截URL](http://www.jianshu.com/p/99c3af6894f4) 6 | - [iOS下JS与OC互相调用(三)--MessageHandler](http://www.jianshu.com/p/433e59c5a9eb) 7 | - [iOS下JS与OC互相调用(四)--JavaScriptCore](http://www.jianshu.com/p/4db513ed2c1a) 8 | - [iOS下JS与OC互相调用(五)--UIWebView + WebViewJavascriptBridge](http://www.jianshu.com/p/2be213e3f673) 9 | - [iOS下JS与OC互相调用(六)--WKWebView + WebViewJavascriptBridge](http://www.jianshu.com/p/e951af9e5e74) 10 | - [深入浅出 JavaScriptCore](http://www.jianshu.com/p/ac534f508fb0) 11 | - [iOS H5容器的一些探究(一):UIWebView和WKWebView的比较和选择](http://www.jianshu.com/p/84a6b1ac974a?utm_campaign=maleskine&utm_content=note&utm_medium=writer_share&utm_source=weibo) 12 | - [iOS H5容器的一些探究(二):iOS下的黑魔法NSURLProtocol](http://www.jianshu.com/p/03ddcfe5ebd7) 13 | 14 | -------------------------------------------------------------------------------- /MD/加密:解密:签名.md: -------------------------------------------------------------------------------- 1 | # 加密/解密/签名 2 | 3 | - [数据加密、HTTPS、线上充值原理?看我就够啦!](http://www.jianshu.com/p/2cb959529c96) 4 | - [iOS App 签名的原理](http://wereadteam.github.io/) 5 | - [移动端的加解密](http://www.cocoachina.com/ios/20161122/18151.html) 6 | - [iOS 使用 RSA 加密, 只需要公钥](http://www.ideawu.net/blog/archives/855.html) 7 | - [一篇搞定RSA加密与SHA签名|与Java完全同步](http://www.jianshu.com/p/a1bad1e2be55) 8 | - [iOS开发 关于MD5加密的相关使用](http://www.jianshu.com/p/36b4b5ca6a23) 9 | - [iOS,一行代码进行RSA、DES 、AES加密、解密及MD5加密](http://www.jianshu.com/p/8fd8306a95d0?utm_campaign=haruki&utm_content=note&utm_medium=reader_share&utm_source=weibo&utm_source=weibolife) 10 | - [加密(AES& RSA)](http://wgh.me/archives/240) 11 | - [iOS RSA的网络安全模型、iOS签名机制总结(登录、token安全、签名)](http://ios.jobbole.com/84351/) 12 | - [理解OAuth 2.0](http://www.ruanyifeng.com/blog/2014/05/oauth_2_0.html) 13 | - [iOS开发之AES+Base64数据混合加密与解密](http://allluckly.cn/aes/AES) 14 | - [CVPasscodeController](https://github.com/unixzii/CVPasscodeController) 15 | 16 | ![](https://raw.githubusercontent.com/unixzii/CVPasscodeController/master/Images/2.png) 17 | 18 | 19 | -------------------------------------------------------------------------------- /MD/即时通迅:IM.md: -------------------------------------------------------------------------------- 1 | # 即时通迅/IM 2 | - [一款集iOS,android,windows视频通话,语音通话源代码](http://www.code4app.com/forum.php?mod=viewthread&tid=8329&extra=page%3D168%26filter%3Dsortid%26orderby%3Ddateline%26sortid%3D1) 3 | - [nvshen 基于xmpp(XMPPFramework/Openfire)的简单聊天系统](http://www.code4app.com/forum.php?mod=viewthread&tid=9565&extra=page%3D87%26filter%3Dsortid%26orderby%3Ddateline%26sortid%3D1) 4 | - [IM 即时通讯技术在多应用场景下的技术实现,以及性能调优(iOS视角)](https://github.com/ChenYilong/iOSBlog/blob/master/Tips/%E5%9F%BA%E4%BA%8EWebsocket%E7%9A%84IM%E5%8D%B3%E6%97%B6%E9%80%9A%E8%AE%AF%E6%8A%80%E6%9C%AF/IM%20%E5%8D%B3%E6%97%B6%E9%80%9A%E8%AE%AF%E6%8A%80%E6%9C%AF%E5%9C%A8%E5%A4%9A%E5%BA%94%E7%94%A8%E5%9C%BA%E6%99%AF%E4%B8%8B%E7%9A%84%E6%8A%80%E6%9C%AF%E5%AE%9E%E7%8E%B0%EF%BC%8C%E4%BB%A5%E5%8F%8A%E6%80%A7%E8%83%BD%E8%B0%83%E4%BC%98%EF%BC%88iOS%E8%A7%86%E8%A7%92%EF%BC%89.md) 5 | - [《关于 iOS socket 都在这里了》](http://t.cn/R5Uerog ) 6 | - [《微信,QQ这类IM app怎么做——谈谈Websocket》](http://t.cn/R5wyoon) 7 | - [优雅的消息 UI 框架库 JSQMessagesViewController](http://t.cn/R5zNdUV) 8 | - [《iOS:即时通讯之Socket》](http://t.cn/RqVjVMN) 9 | 10 | 11 | -------------------------------------------------------------------------------- /MD/多线程.md: -------------------------------------------------------------------------------- 1 | # 多线程 2 | - [《iOS多线程-你还在为线程安全发愁吗》](http://t.cn/RGT4VUm) 3 | 4 | -------------------------------------------------------------------------------- /MD/文档整理.md: -------------------------------------------------------------------------------- 1 | # 文档整理 2 | - [开源Apps等超全资源整合网站](http://t.cn/RUhQoma) 3 | - [UI库整理](http://www.jianshu.com/p/2ba717122951) 4 | - [刘彦玮的技术博客中文章对应的demo](https://github.com/coolnameismy/demo) 5 | - [iOSNotebook](https://www.gitbook.com/book/viktyz/iosnotebook/details) 6 | - [TimLiu-iOS](https://github.com/Tim9Liu9/TimLiu-iOS) 7 | - [SwiftGuide](https://github.com/ipader/SwiftGuide) 8 | - [iOS知识树,知识点](http://blog.csdn.net/hherima/article/details/50714866) 9 | - [iOS及Mac开源项目和学习资料【超级全面】](http://www.open-open.com/lib/view/open1442664670352.html) 10 | 11 | -------------------------------------------------------------------------------- /MD/蓝牙.md: -------------------------------------------------------------------------------- 1 | # 蓝牙 2 | - [iOS蓝牙的开发专题]( http://liuyanwei.jumppo.com/2015/07/17/ios-BLE-0.html) 3 | - [iOS开发之玩转蓝牙](http://t.cn/RVRIjbb) 4 | - [《BluetoothKit:使用 BLE 在 iOS/OSX 设备之间通讯](http://t.cn/Rc6q78r) 5 | - [iOS 蓝牙工具封装库,让你更容易的操作蓝牙](http://t.cn/Rt8Ui88) 6 | - [使用iOS AirPrint 让你的APP轻松实现打印功能](http://ios.jobbole.com/85020/) 7 | - [BabyBluetooth](https://github.com/coolnameismy/BabyBluetooth) 8 | - [iOS Bluetooth 打印小票(一)](http://www.jianshu.com/p/2d624044a27b) 9 | - [iOS Bluetooth 打印小票(二)](http://www.jianshu.com/p/90cc08d11b5a) 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /MD/转场动画.md: -------------------------------------------------------------------------------- 1 | # 转场动画 2 | - [ZoomTransitioning](http://t.cn/RtAgbno) 3 | - [《RZTransitions:iOS View Controller转场动画库》](http://t.cn/Rq2C2f6 ) 4 | - [《iOS实现自定义的弹出视图(popView)》](http://t.cn/Rc6W2px ) 5 | - [任性切换自定义转场效果的XXTransition](http://t.cn/RVi6ctE) 6 | - [自定义过渡动画](http://t.cn/RVpVzPj) 7 | - [Presentr](http://t.cn/RVRQE64) 8 | 9 | -------------------------------------------------------------------------------- /Tool/Category/UIColor-Extension.swift: -------------------------------------------------------------------------------- 1 | // 2 | // UIColor-Extension.swift 3 | // XMGTV 4 | // 5 | // Created by 小码哥 on 2016/12/4. 6 | // Copyright © 2016年 coderwhy. All rights reserved. 7 | // 8 | 9 | import UIKit 10 | 11 | extension UIColor { 12 | // 在extension中给系统的类扩充构造函数,只能扩充`便利构造函数` 13 | convenience init(r : CGFloat, g : CGFloat, b : CGFloat, alpha : CGFloat = 1.0) { 14 | self.init(red: r / 255.0, green: g / 255.0, blue: b / 255.0, alpha: alpha) 15 | } 16 | 17 | convenience init?(hex : String, alpha : CGFloat = 1.0) { 18 | 19 | // 0xff0000 20 | // 1.判断字符串的长度是否符合 21 | guard hex.characters.count >= 6 else { 22 | return nil 23 | } 24 | 25 | // 2.将字符串转成大写 26 | var tempHex = hex.uppercased() 27 | 28 | // 3.判断开头: 0x/#/## 29 | if tempHex.hasPrefix("0x") || tempHex.hasPrefix("##") { 30 | tempHex = (tempHex as NSString).substring(from: 2) 31 | } 32 | if tempHex.hasPrefix("#") { 33 | tempHex = (tempHex as NSString).substring(from: 1) 34 | } 35 | 36 | // 4.分别取出RGB 37 | // FF --> 255 38 | var range = NSRange(location: 0, length: 2) 39 | let rHex = (tempHex as NSString).substring(with: range) 40 | range.location = 2 41 | let gHex = (tempHex as NSString).substring(with: range) 42 | range.location = 4 43 | let bHex = (tempHex as NSString).substring(with: range) 44 | 45 | // 5.将十六进制转成数字 emoji表情 46 | var r : UInt32 = 0, g : UInt32 = 0, b : UInt32 = 0 47 | Scanner(string: rHex).scanHexInt32(&r) 48 | Scanner(string: gHex).scanHexInt32(&g) 49 | Scanner(string: bHex).scanHexInt32(&b) 50 | 51 | self.init(r : CGFloat(r), g : CGFloat(g), b : CGFloat(b)) 52 | } 53 | 54 | class func randomColor() -> UIColor { 55 | return UIColor(r: CGFloat(arc4random_uniform(256)), g: CGFloat(arc4random_uniform(256)), b: CGFloat(arc4random_uniform(256))) 56 | } 57 | } 58 | -------------------------------------------------------------------------------- /Tool/PageView/PageView.xcodeproj/project.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /Tool/PageView/PageView.xcodeproj/project.xcworkspace/xcuserdata/adobe.xcuserdatad/UserInterfaceState.xcuserstate: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Halowl/iOSDev/0b1b3c2df94f939a422283e8505a476e684b443a/Tool/PageView/PageView.xcodeproj/project.xcworkspace/xcuserdata/adobe.xcuserdatad/UserInterfaceState.xcuserstate -------------------------------------------------------------------------------- /Tool/PageView/PageView.xcodeproj/xcuserdata/adobe.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | -------------------------------------------------------------------------------- /Tool/PageView/PageView.xcodeproj/xcuserdata/adobe.xcuserdatad/xcschemes/xcschememanagement.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | SchemeUserState 6 | 7 | PageView.xcscheme 8 | 9 | orderHint 10 | 0 11 | 12 | 13 | SuppressBuildableAutocreation 14 | 15 | 989866711ECD3F17000E4B11 16 | 17 | primary 18 | 19 | 20 | 21 | 22 | 23 | -------------------------------------------------------------------------------- /Tool/PageView/PageView/AppDelegate.swift: -------------------------------------------------------------------------------- 1 | // 2 | // AppDelegate.swift 3 | // PageView 4 | // 5 | // Created by Adobe on 17/5/18. 6 | // Copyright © 2017年 龚. All rights reserved. 7 | // 8 | 9 | import UIKit 10 | 11 | @UIApplicationMain 12 | class AppDelegate: UIResponder, UIApplicationDelegate { 13 | 14 | var window: UIWindow? 15 | 16 | 17 | func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool { 18 | 19 | return true 20 | } 21 | 22 | 23 | } 24 | 25 | -------------------------------------------------------------------------------- /Tool/PageView/PageView/Assets.xcassets/AppIcon.appiconset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "iphone", 5 | "size" : "20x20", 6 | "scale" : "2x" 7 | }, 8 | { 9 | "idiom" : "iphone", 10 | "size" : "20x20", 11 | "scale" : "3x" 12 | }, 13 | { 14 | "idiom" : "iphone", 15 | "size" : "29x29", 16 | "scale" : "2x" 17 | }, 18 | { 19 | "idiom" : "iphone", 20 | "size" : "29x29", 21 | "scale" : "3x" 22 | }, 23 | { 24 | "idiom" : "iphone", 25 | "size" : "40x40", 26 | "scale" : "2x" 27 | }, 28 | { 29 | "idiom" : "iphone", 30 | "size" : "40x40", 31 | "scale" : "3x" 32 | }, 33 | { 34 | "idiom" : "iphone", 35 | "size" : "60x60", 36 | "scale" : "2x" 37 | }, 38 | { 39 | "idiom" : "iphone", 40 | "size" : "60x60", 41 | "scale" : "3x" 42 | } 43 | ], 44 | "info" : { 45 | "version" : 1, 46 | "author" : "xcode" 47 | } 48 | } -------------------------------------------------------------------------------- /Tool/PageView/PageView/Base.lproj/LaunchScreen.storyboard: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | -------------------------------------------------------------------------------- /Tool/PageView/PageView/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | UIViewControllerBasedStatusBarAppearance 6 | 7 | CFBundleDevelopmentRegion 8 | en 9 | CFBundleExecutable 10 | $(EXECUTABLE_NAME) 11 | CFBundleIdentifier 12 | $(PRODUCT_BUNDLE_IDENTIFIER) 13 | CFBundleInfoDictionaryVersion 14 | 6.0 15 | CFBundleName 16 | $(PRODUCT_NAME) 17 | CFBundlePackageType 18 | APPL 19 | CFBundleShortVersionString 20 | 1.0 21 | CFBundleVersion 22 | 1 23 | LSRequiresIPhoneOS 24 | 25 | UILaunchStoryboardName 26 | LaunchScreen 27 | UIMainStoryboardFile 28 | Main 29 | UIRequiredDeviceCapabilities 30 | 31 | armv7 32 | 33 | UISupportedInterfaceOrientations 34 | 35 | UIInterfaceOrientationPortrait 36 | UIInterfaceOrientationLandscapeLeft 37 | UIInterfaceOrientationLandscapeRight 38 | 39 | 40 | 41 | -------------------------------------------------------------------------------- /Tool/PageView/PageView/NavigationController.swift: -------------------------------------------------------------------------------- 1 | 2 | // 3 | // NavigationController.swift 4 | // PageView 5 | // 6 | // Created by Adobe on 17/5/18. 7 | // Copyright © 2017年 龚. All rights reserved. 8 | // 9 | 10 | import UIKit 11 | 12 | class NavigationController: UINavigationController { 13 | 14 | override func viewDidLoad() { 15 | super.viewDidLoad() 16 | UINavigationBar.appearance().barTintColor = UIColor.orange 17 | 18 | } 19 | 20 | override var preferredStatusBarStyle: UIStatusBarStyle{ 21 | return .lightContent 22 | } 23 | 24 | 25 | } 26 | -------------------------------------------------------------------------------- /Tool/PageView/PageView/PageStyle.swift: -------------------------------------------------------------------------------- 1 | // 2 | // PageStyle.swift 3 | // PageView 4 | // 5 | // Created by Adobe on 17/5/18. 6 | // Copyright © 2017年 龚. All rights reserved. 7 | // 8 | 9 | import UIKit 10 | 11 | class PageStyle { 12 | var titleViewHeight : CGFloat = 44 13 | var titleFont : UIFont = UIFont.systemFont(ofSize: 14) 14 | var isScrollEnable : Bool = false 15 | 16 | var titleMargin : CGFloat = 20 17 | 18 | var normalColor : UIColor = UIColor(r: 255, g: 255, b: 255) 19 | var selectColor : UIColor = UIColor(r: 255, g: 127, b: 0) 20 | 21 | var bottomLineBackgroundColor = UIColor.red 22 | var bottomLineHeight : CGFloat = 2 23 | var bottomLineIsShow : Bool = true 24 | 25 | var isTitleScale : Bool = false 26 | var scaleRange : CGFloat = 1.2 27 | 28 | var isShowCoverView : Bool = false 29 | var coverBgColor : UIColor = UIColor.randomColor() 30 | var coverAlpah : CGFloat = 0.4 31 | var coverMargin : CGFloat = 8 32 | var coverHeight : CGFloat = 25 33 | } 34 | 35 | 36 | -------------------------------------------------------------------------------- /Tool/PageView/PageView/PageView.swift: -------------------------------------------------------------------------------- 1 | // 2 | // PageView.swift 3 | // PageView 4 | // 5 | // Created by Adobe on 17/5/18. 6 | // Copyright © 2017年 龚. All rights reserved. 7 | // 8 | 9 | import UIKit 10 | 11 | class PageView: UIView { 12 | 13 | fileprivate var titles:[String] 14 | fileprivate var childVcs:[UIViewController] 15 | fileprivate var parentVc:UIViewController 16 | fileprivate var pageStyel:PageStyle 17 | 18 | init(frame: CGRect,titles:[String],childVcs:[UIViewController],parentVc :UIViewController,titleStyle:PageStyle) { 19 | 20 | self.titles = titles 21 | self.parentVc = parentVc 22 | self.childVcs = childVcs 23 | self.pageStyel = titleStyle 24 | super.init(frame: frame) 25 | setupUI() 26 | } 27 | 28 | required init?(coder aDecoder: NSCoder) { 29 | fatalError("init(coder:) has not been implemented") 30 | } 31 | } 32 | 33 | extension PageView{ 34 | 35 | fileprivate func setupUI(){ 36 | let rect = CGRect.init(x: 0, y: 0, width: bounds.width, height: pageStyel.titleViewHeight) 37 | let titleView = TitleView.init(frame: rect, titles: titles, pageStyle:pageStyel ) 38 | titleView.backgroundColor = UIColor.black 39 | addSubview(titleView) 40 | 41 | let frame = CGRect.init(x: 0, y: titleView.frame.maxY, width: bounds.width, height: bounds.height - rect.height) 42 | let contentView = ContentView.init(frame: frame, childVcs: childVcs, parentVc: parentVc) 43 | addSubview(contentView) 44 | contentView.delegate = titleView 45 | titleView.delegate = contentView 46 | 47 | } 48 | 49 | 50 | } 51 | -------------------------------------------------------------------------------- /Tool/PageView/PageView/UIColor-Extension.swift: -------------------------------------------------------------------------------- 1 | // 2 | // UIColor-Extension.swift 3 | // XMGTV 4 | // 5 | // Created by 小码哥 on 2016/12/4. 6 | // Copyright © 2016年 coderwhy. All rights reserved. 7 | // 8 | 9 | import UIKit 10 | 11 | extension UIColor { 12 | // 在extension中给系统的类扩充构造函数,只能扩充`便利构造函数` 13 | convenience init(r : CGFloat, g : CGFloat, b : CGFloat, alpha : CGFloat = 1.0) { 14 | self.init(red: r / 255.0, green: g / 255.0, blue: b / 255.0, alpha: alpha) 15 | } 16 | 17 | convenience init?(hex : String, alpha : CGFloat = 1.0) { 18 | 19 | // 0xff0000 20 | // 1.判断字符串的长度是否符合 21 | guard hex.characters.count >= 6 else { 22 | return nil 23 | } 24 | 25 | // 2.将字符串转成大写 26 | var tempHex = hex.uppercased() 27 | 28 | // 3.判断开头: 0x/#/## 29 | if tempHex.hasPrefix("0x") || tempHex.hasPrefix("##") { 30 | tempHex = (tempHex as NSString).substring(from: 2) 31 | } 32 | if tempHex.hasPrefix("#") { 33 | tempHex = (tempHex as NSString).substring(from: 1) 34 | } 35 | 36 | // 4.分别取出RGB 37 | // FF --> 255 38 | var range = NSRange(location: 0, length: 2) 39 | let rHex = (tempHex as NSString).substring(with: range) 40 | range.location = 2 41 | let gHex = (tempHex as NSString).substring(with: range) 42 | range.location = 4 43 | let bHex = (tempHex as NSString).substring(with: range) 44 | 45 | // 5.将十六进制转成数字 emoji表情 46 | var r : UInt32 = 0, g : UInt32 = 0, b : UInt32 = 0 47 | Scanner(string: rHex).scanHexInt32(&r) 48 | Scanner(string: gHex).scanHexInt32(&g) 49 | Scanner(string: bHex).scanHexInt32(&b) 50 | 51 | self.init(r : CGFloat(r), g : CGFloat(g), b : CGFloat(b)) 52 | } 53 | 54 | class func randomColor() -> UIColor { 55 | return UIColor(r: CGFloat(arc4random_uniform(256)), g: CGFloat(arc4random_uniform(256)), b: CGFloat(arc4random_uniform(256))) 56 | } 57 | } 58 | -------------------------------------------------------------------------------- /Tool/PageView/PageView/ViewController.swift: -------------------------------------------------------------------------------- 1 | // 2 | // ViewController.swift 3 | // PageView 4 | // 5 | // Created by Adobe on 17/5/18. 6 | // Copyright © 2017年 龚. All rights reserved. 7 | // 8 | 9 | import UIKit 10 | 11 | class ViewController: UIViewController { 12 | 13 | override func viewDidLoad() { 14 | super.viewDidLoad() 15 | 16 | automaticallyAdjustsScrollViewInsets = false 17 | 18 | // let titles:[String] = ["hello","lily","lucy","andy","yuby"] 19 | 20 | let titles:[String] = ["hllo","lily","lucy","andy","yubry","leily","lucy","anddy","yaeuby","hello","lily","lucy","andy","yuby"] 21 | let style = PageStyle() 22 | style.titleViewHeight = 44 23 | style.isScrollEnable = true 24 | style.isTitleScale = true 25 | var childVcs:[UIViewController] = [UIViewController]() 26 | for _ in 0.. '271584255@qq.com' } 19 | s.platform = :ios,"7.0" 20 | s.source = { :git => "~/Desktop/Menu" } #本地的路径 21 | s.source_files = "Head/*.{h,m}" #制定需要引入的文件 22 | s.requires_arc = true 23 | end 24 | ``` 25 | 26 | 6. 在要使用到上面的本地库的地方,在podfile中加入 27 | 28 | ```objc 29 | target "Test" do 30 | 31 | source 'https://github.com/CocoaPods/Specs.git' 32 | platform :ios, "7.0" 33 | 34 | pod 'Menu', :path => '~/Desktop/Menu' 35 | end 36 | ``` 37 | 38 | 7. pod install 39 | ![](https://raw.githubusercontent.com/gongjujun/MyCode/master/%E6%96%87%E7%AB%A0/CocoaPods/Snip20170224_12.png) 40 | 41 | 42 | - [使用CocoaPods管理本地代码](http://www.jianshu.com/p/d2b0acfad0d8) 43 | - [基于 CocoaPods 和 Git 的 iOS 工程组件化实践](https://skyline75489.github.io/post/2016-3-19_ios_modularization_practice.html) 44 | - ![](https://github.com/gongjujun/MyCode/blob/master/%E6%96%87%E7%AB%A0/CocoaPods/Snip20170224_11.png?raw=true) 45 | 46 | 47 | 48 | -------------------------------------------------------------------------------- /文章/iOS知识树.md: -------------------------------------------------------------------------------- 1 | # iOS知识树 2 | > UIKit 3 | 4 | - UIViewController 5 | - ViewController在iOS是一个非常重要的概念,其在一个App中所扮演的角色 6 | - View Managemnet:管理View 7 | - Data Marshalling:管理数据 8 | - User Interactions:响应用户交互 9 | - Resource Management:管理资源 10 | - Adaptivity:适配不同的屏幕尺寸空间的变化 11 | - 生命周期 12 | - (http://www.cnblogs.com/smileEvday/archive/2012/03/05/2380916.html) 13 | - (http://blog.csdn.net/huifeidexin_1/article/details/7566226) 14 | - [+ (void)initialize和 + (void)load 的调用时机,以及区别](http://www.cnblogs.com/ider/archive/2012/09/29/objective_c_load_vs_initialize.html) 15 | - ViewDidLoad调用时机:当view被首次使用的时候,某些情况可提升性能 16 | - UIView 17 | - [frame和bounds的区别](http://blog.csdn.net/hherima/article/details/39501857) 18 | - frame是相对父视图坐标系统的值 19 | - bounds是相对于本身坐标系统的值 20 | - [layoutSubviews](http://bachiscoding.com/blog/2014/12/15/when-will-layoutsubviews-be-invoked/)需要将`[super layoutSubviews];`放到最后,不然iOS7有可能会有这个崩溃 21 | - ★ ["Auto Layout still required after executing -layoutSubviews” iOS7上崩溃sdk缺陷](http://blog.csdn.net/hherima/article/details/47343223) 22 | 23 | -------------------------------------------------------------------------------- /文章/截屏并重命名保存到任意路径下.md: -------------------------------------------------------------------------------- 1 | # 截屏并重命名保存到任意路径下 2 | 3 | ```objc 4 | // 截屏并重命名保存到任意路径下 5 | - (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event{ 6 | UIView *screenView = [[UIScreen mainScreen]snapshotView AfterScreenUpdates:NO]; 7 | UIGraphicsBeginImageContextWithOptions(screenView.frame.size, YES, [[UIScreen mainScreen]scale]); 8 | [screenView drawViewHierarchyInRect:screenView.bounds afterScreenUpdates:YES]; 9 | UIImage *image = UIGraphicsGetImageFromCurrentImageContext(); 10 | UIGraphicsEndImageContext(); 11 | 12 | // 1.保存到相册 13 | UIImageWriteToSavedPhotosAlbum(image, nil, nil, nil); 14 | 15 | 16 | 17 | // 2.保存到任意路径 18 | 19 | NSString *pathDocuments = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0]; //沙盒目录,可以自己修改 20 | 21 | NSString*filePath=[pathDocuments stringByAppendingPathComponent:@"contact.png"]; 22 | 23 | NSData * creenData =UIImagePNGRepresentation(image); 24 | 25 | NSFileManager * fileManager=[NSFileManager defaultManager]; 26 | 27 | [fileManager createFileAtPath:filePath contents:creenData attributes:nil]; 28 | 29 | 30 | } 31 | 32 | ``` 33 | 34 | --------------------------------------------------------------------------------