├── 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 | 
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 | - [JavaScriptCore](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 | 
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 | 
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 | - 
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 |
--------------------------------------------------------------------------------