├── .DS_Store ├── Folder ├── 组件化.key ├── LCImageView │ ├── Gemfile │ ├── .DS_Store │ ├── LCImageView │ │ ├── Assets.xcassets │ │ │ ├── Contents.json │ │ │ ├── loginIcon.imageset │ │ │ │ ├── WX20170419-165655.png │ │ │ │ └── Contents.json │ │ │ └── AppIcon.appiconset │ │ │ │ └── Contents.json │ │ ├── LCImageView.entitlements │ │ ├── AppDelegate.swift │ │ ├── ViewController.swift │ │ └── Info.plist │ ├── LCImageView.xcodeproj │ │ └── project.xcworkspace │ │ │ └── contents.xcworkspacedata │ └── fastlane │ │ ├── Appfile │ │ └── Fastfile ├── SimuLooker │ ├── .DS_Store │ ├── SimuLooker │ │ ├── .DS_Store │ │ ├── Assets.xcassets │ │ │ ├── Contents.json │ │ │ ├── iPhone.imageset │ │ │ │ ├── iPhone.png │ │ │ │ ├── iPhone@2x.png │ │ │ │ └── Contents.json │ │ │ ├── AppIcon.appiconset │ │ │ │ ├── phone160.png │ │ │ │ ├── phone160 2.png │ │ │ │ ├── phone160-1.png │ │ │ │ ├── phone160 2-1.png │ │ │ │ ├── phone160 2-2.png │ │ │ │ ├── phone160 2-3.png │ │ │ │ └── Contents.json │ │ │ ├── simulooker.imageset │ │ │ │ ├── simulooker.png │ │ │ │ └── Contents.json │ │ │ └── StatusItemIcon.imageset │ │ │ │ ├── phone160 2-3.png │ │ │ │ └── Contents.json │ │ ├── SimuLooker.entitlements │ │ ├── PreferenceController │ │ │ ├── GeneralController.swift │ │ │ ├── PreferenceWindowController.swift │ │ │ ├── PreTableViewController.swift │ │ │ └── AdvanceController.swift │ │ ├── AboutController │ │ │ ├── AboutWindowController.swift │ │ │ └── AboutViewController.swift │ │ ├── AppDelegate.swift │ │ ├── ToolKit │ │ │ ├── ShellTask.swift │ │ │ ├── ActionTrampline.swift │ │ │ └── SimuPath.swift │ │ ├── Model │ │ │ ├── Devices.swift │ │ │ └── SimuDeviceManager.swift │ │ ├── Base.lproj │ │ │ └── MainMenu.xib │ │ ├── Info.plist │ │ └── Menu │ │ │ ├── SAppMenuItem.swift │ │ │ └── SAppItemView.swift │ ├── SimuStartHelper │ │ ├── Assets.xcassets │ │ │ ├── Contents.json │ │ │ └── AppIcon.appiconset │ │ │ │ └── Contents.json │ │ ├── SimuStartHelper.entitlements │ │ ├── Base.lproj │ │ │ └── MainMenu.xib │ │ ├── Info.plist │ │ └── AppDelegate.swift │ ├── Pods │ │ ├── Target Support Files │ │ │ ├── SwiftyJSON │ │ │ │ ├── SwiftyJSON.modulemap │ │ │ │ ├── SwiftyJSON-dummy.m │ │ │ │ ├── SwiftyJSON-prefix.pch │ │ │ │ ├── SwiftyJSON-umbrella.h │ │ │ │ ├── SwiftyJSON.xcconfig │ │ │ │ └── Info.plist │ │ │ └── Pods-SimuLooker │ │ │ │ ├── Pods-SimuLooker.modulemap │ │ │ │ ├── Pods-SimuLooker-dummy.m │ │ │ │ ├── Pods-SimuLooker-umbrella.h │ │ │ │ ├── Pods-SimuLooker.debug.xcconfig │ │ │ │ ├── Pods-SimuLooker.release.xcconfig │ │ │ │ ├── Info.plist │ │ │ │ └── Pods-SimuLooker-acknowledgements.markdown │ │ ├── Manifest.lock │ │ └── SwiftyJSON │ │ │ └── LICENSE │ ├── SimuLooker.xcodeproj │ │ └── project.xcworkspace │ │ │ └── contents.xcworkspacedata │ ├── Podfile.lock │ ├── SimuLooker.xcworkspace │ │ ├── contents.xcworkspacedata │ │ └── xcshareddata │ │ │ └── IDEWorkspaceChecks.plist │ └── Podfile ├── SimulatorFinder.key ├── SwiftQQ │ ├── SwiftQQ │ │ ├── Assets.xcassets │ │ │ ├── Contents.json │ │ │ ├── Home │ │ │ │ ├── Contents.json │ │ │ │ ├── menu-more-down.imageset │ │ │ │ │ ├── menu-more-down.png │ │ │ │ │ ├── menu-more-down@2x.png │ │ │ │ │ └── Contents.json │ │ │ │ ├── menu-contact-down.imageset │ │ │ │ │ ├── menu-contact-down.png │ │ │ │ │ ├── menu-contact-down@2x.png │ │ │ │ │ └── Contents.json │ │ │ │ ├── menu-message-down.imageset │ │ │ │ │ ├── menu-message-down.png │ │ │ │ │ ├── menu-message-down@2x.png │ │ │ │ │ └── Contents.json │ │ │ │ ├── menu-more-normal.imageset │ │ │ │ │ ├── menu-more-normal.png │ │ │ │ │ ├── menu-more-normal@2x.png │ │ │ │ │ └── Contents.json │ │ │ │ ├── menu-contact-normal.imageset │ │ │ │ │ ├── menu-contact-normal.png │ │ │ │ │ ├── menu-contact-normal@2x.png │ │ │ │ │ └── Contents.json │ │ │ │ └── menu-message-normal.imageset │ │ │ │ │ ├── menu-message-normal.png │ │ │ │ │ ├── menu-message-normal@2x.png │ │ │ │ │ └── Contents.json │ │ │ ├── Login │ │ │ │ ├── Contents.json │ │ │ │ ├── bg-back.imageset │ │ │ │ │ ├── bg-back.png │ │ │ │ │ ├── bg-back@2x.png │ │ │ │ │ └── Contents.json │ │ │ │ ├── circle-big.imageset │ │ │ │ │ ├── circle-big.png │ │ │ │ │ ├── circle-big@2x.png │ │ │ │ │ └── Contents.json │ │ │ │ ├── code_hover.imageset │ │ │ │ │ ├── code_hover.png │ │ │ │ │ ├── code_hover@2x.png │ │ │ │ │ └── Contents.json │ │ │ │ ├── code_normal.imageset │ │ │ │ │ ├── code_normal.png │ │ │ │ │ ├── code_normal@2x.png │ │ │ │ │ └── Contents.json │ │ │ │ ├── head-normal.imageset │ │ │ │ │ ├── head-normal.png │ │ │ │ │ ├── head-normal@2x.png │ │ │ │ │ └── Contents.json │ │ │ │ ├── input-bottom.imageset │ │ │ │ │ ├── input-bottom.png │ │ │ │ │ ├── input-bottom@2x.png │ │ │ │ │ └── Contents.json │ │ │ │ ├── loading-circle.imageset │ │ │ │ │ ├── loading-circle.png │ │ │ │ │ ├── loading-circle@2x.png │ │ │ │ │ └── Contents.json │ │ │ │ ├── Icon-Arrow-down.imageset │ │ │ │ │ ├── Icon-Arrow-down.png │ │ │ │ │ ├── Icon-Arrow-down@2x.png │ │ │ │ │ └── Contents.json │ │ │ │ ├── icon-enter-down.imageset │ │ │ │ │ ├── icon-enter-down.png │ │ │ │ │ ├── icon-enter-down@2x.png │ │ │ │ │ └── Contents.json │ │ │ │ ├── icon-enter-undo.imageset │ │ │ │ │ ├── icon-enter-undo.png │ │ │ │ │ ├── icon-enter-undo@2x.png │ │ │ │ │ └── Contents.json │ │ │ │ ├── Icon-Arrow-hover.imageset │ │ │ │ │ ├── Icon-Arrow-hover.png │ │ │ │ │ ├── Icon-Arrow-hover@2x.png │ │ │ │ │ └── Contents.json │ │ │ │ ├── icon-enter-hover.imageset │ │ │ │ │ ├── icon-enter-hover.png │ │ │ │ │ ├── icon-enter-hover@2x.png │ │ │ │ │ └── Contents.json │ │ │ │ ├── Icon-Arrow-normal.imageset │ │ │ │ │ ├── Icon-Arrow-normal.png │ │ │ │ │ ├── Icon-Arrow-normal@2x.png │ │ │ │ │ └── Contents.json │ │ │ │ ├── Icon-choose-hover.imageset │ │ │ │ │ ├── Icon-choose-hover.png │ │ │ │ │ ├── Icon-choose-hover@2x.png │ │ │ │ │ └── Contents.json │ │ │ │ ├── icon-close-normal.imageset │ │ │ │ │ ├── icon-close-normal.png │ │ │ │ │ ├── icon-close-normal@2x.png │ │ │ │ │ └── Contents.json │ │ │ │ ├── icon-enter-normal.imageset │ │ │ │ │ ├── icon-enter-normal.png │ │ │ │ │ ├── icon-enter-normal@2x.png │ │ │ │ │ └── Contents.json │ │ │ │ ├── cell_checkbox_hover.imageset │ │ │ │ │ ├── cell_checkbox_hover.png │ │ │ │ │ ├── cell_checkbox_hover@2x.png │ │ │ │ │ └── Contents.json │ │ │ │ ├── cell_checkbox_normal.imageset │ │ │ │ │ ├── cell_checkbox_normal.png │ │ │ │ │ ├── cell_checkbox_normal@2x.png │ │ │ │ │ └── Contents.json │ │ │ │ ├── cell_checkbox_checked.imageset │ │ │ │ │ ├── cell_checkbox_checked.png │ │ │ │ │ ├── cell_checkbox_checked@2x.png │ │ │ │ │ └── Contents.json │ │ │ │ └── LoginWindow_BigDefaultHeadImage.imageset │ │ │ │ │ ├── LoginWindow_BigDefaultHeadImage.png │ │ │ │ │ ├── LoginWindow_BigDefaultHeadImage@2x.png │ │ │ │ │ └── Contents.json │ │ │ ├── Message │ │ │ │ ├── Contents.json │ │ │ │ ├── test.imageset │ │ │ │ │ ├── test.jpg │ │ │ │ │ └── Contents.json │ │ │ │ └── test1.imageset │ │ │ │ │ ├── test1.jpg │ │ │ │ │ └── Contents.json │ │ │ ├── ToolBar │ │ │ │ ├── Contents.json │ │ │ │ ├── toolbar_files_down.imageset │ │ │ │ │ ├── toolbar_files_down.png │ │ │ │ │ ├── toolbar_files_down@2x.png │ │ │ │ │ └── Contents.json │ │ │ │ ├── toolbar_phone_down.imageset │ │ │ │ │ ├── toolbar_phone_down.png │ │ │ │ │ ├── toolbar_phone_down@2x.png │ │ │ │ │ └── Contents.json │ │ │ │ ├── toolbar_shake_down.imageset │ │ │ │ │ ├── toolbar_shake_down.png │ │ │ │ │ ├── toolbar_shake_down@2x.png │ │ │ │ │ └── Contents.json │ │ │ │ ├── toolbar_files_hover.imageset │ │ │ │ │ ├── toolbar_files_hover.png │ │ │ │ │ ├── toolbar_files_hover@2x.png │ │ │ │ │ └── Contents.json │ │ │ │ ├── toolbar_phone_hover.imageset │ │ │ │ │ ├── toolbar_phone_hover.png │ │ │ │ │ ├── toolbar_phone_hover@2x.png │ │ │ │ │ └── Contents.json │ │ │ │ ├── toolbar_shake_hover.imageset │ │ │ │ │ ├── toolbar_shake_hover.png │ │ │ │ │ ├── toolbar_shake_hover@2x.png │ │ │ │ │ └── Contents.json │ │ │ │ ├── toolbar_files_normal.imageset │ │ │ │ │ ├── toolbar_files_normal.png │ │ │ │ │ ├── toolbar_files_normal@2x.png │ │ │ │ │ └── Contents.json │ │ │ │ ├── toolbar_history_down.imageset │ │ │ │ │ ├── toolbar_history_down.png │ │ │ │ │ ├── toolbar_history_down@2x.png │ │ │ │ │ └── Contents.json │ │ │ │ ├── toolbar_phone_normal.imageset │ │ │ │ │ ├── toolbar_phone_normal.png │ │ │ │ │ ├── toolbar_phone_normal@2x.png │ │ │ │ │ └── Contents.json │ │ │ │ ├── toolbar_shake_normal.imageset │ │ │ │ │ ├── toolbar_shake_normal.png │ │ │ │ │ ├── toolbar_shake_normal@2x.png │ │ │ │ │ └── Contents.json │ │ │ │ ├── toolbar_emoticon_down.imageset │ │ │ │ │ ├── toolbar_emoticon_down.png │ │ │ │ │ ├── toolbar_emoticon_down@2x.png │ │ │ │ │ └── Contents.json │ │ │ │ ├── toolbar_history_hover.imageset │ │ │ │ │ ├── toolbar_history_hover.png │ │ │ │ │ ├── toolbar_history_hover@2x.png │ │ │ │ │ └── Contents.json │ │ │ │ ├── toolbar_emoticon_hover.imageset │ │ │ │ │ ├── toolbar_emoticon_hover.png │ │ │ │ │ ├── toolbar_emoticon_hover@2x.png │ │ │ │ │ └── Contents.json │ │ │ │ ├── toolbar_emoticon_normal.imageset │ │ │ │ │ ├── toolbar_emoticon_normal.png │ │ │ │ │ ├── toolbar_emoticon_normal@2x.png │ │ │ │ │ └── Contents.json │ │ │ │ ├── toolbar_history_normal.imageset │ │ │ │ │ ├── toolbar_history_normal.png │ │ │ │ │ ├── toolbar_history_normal@2x.png │ │ │ │ │ └── Contents.json │ │ │ │ ├── toolbar_screenCapture_down.imageset │ │ │ │ │ ├── toolbar_screenCapture_down.png │ │ │ │ │ ├── toolbar_screenCapture_down@2x.png │ │ │ │ │ └── Contents.json │ │ │ │ ├── toolbar_screenCapture_hover.imageset │ │ │ │ │ ├── toolbar_screenCapture_hover.png │ │ │ │ │ ├── toolbar_screenCapture_hover@2x.png │ │ │ │ │ └── Contents.json │ │ │ │ └── toolbar_screenCapture_normal.imageset │ │ │ │ │ ├── toolbar_screenCapture_normal.png │ │ │ │ │ ├── toolbar_screenCapture_normal@2x.png │ │ │ │ │ └── Contents.json │ │ │ └── AppIcon.appiconset │ │ │ │ └── Contents.json │ │ ├── SwiftQQ.entitlements │ │ ├── Login │ │ │ ├── LoginWindow.swift │ │ │ ├── BackgroundImageView.swift │ │ │ ├── LoginWindowController.swift │ │ │ ├── HoverImageView.swift │ │ │ ├── HoverButton.swift │ │ │ └── LoginSubController.swift │ │ ├── Message │ │ │ ├── Models │ │ │ │ ├── MsgModel.swift │ │ │ │ └── ChatDataModel.swift │ │ │ └── View │ │ │ │ ├── SubSplitDelegate.swift │ │ │ │ ├── MsgCollectionItem.swift │ │ │ │ ├── BaseSplitViewDelegate.swift │ │ │ │ └── ChatCellView.swift │ │ ├── AppDelegate.swift │ │ ├── More │ │ │ ├── MoreViewController.swift │ │ │ └── more.storyboard │ │ ├── Contact │ │ │ ├── ContactViewController.swift │ │ │ └── contact.storyboard │ │ ├── ThirdLibs │ │ │ └── SnapKit │ │ │ │ ├── LICENSE │ │ │ │ └── Source │ │ │ │ ├── ConstraintView.swift │ │ │ │ ├── ConstraintInsets.swift │ │ │ │ ├── ConstraintLayoutSupport.swift │ │ │ │ ├── UILayoutSupport+Extensions.swift │ │ │ │ ├── ConstraintLayoutGuide+Extensions.swift │ │ │ │ ├── ConstraintLayoutGuide.swift │ │ │ │ ├── ConstraintConfig.swift │ │ │ │ ├── Typealiases.swift │ │ │ │ ├── ConstraintRelation.swift │ │ │ │ ├── ConstraintMakerFinalizable.swift │ │ │ │ ├── ConstraintRelatableTarget.swift │ │ │ │ ├── LayoutConstraint.swift │ │ │ │ └── ConstraintLayoutSupportDSL.swift │ │ ├── Info.plist │ │ └── New Group │ │ │ └── HomeWindowController.swift │ └── SwiftQQ.xcodeproj │ │ └── project.xcworkspace │ │ ├── contents.xcworkspacedata │ │ └── xcshareddata │ │ └── IDEWorkspaceChecks.plist ├── FinderToolDemo │ ├── FinderToolDemo │ │ ├── Assets.xcassets │ │ │ ├── Contents.json │ │ │ └── AppIcon.appiconset │ │ │ │ └── Contents.json │ │ ├── ViewController.h │ │ ├── main.m │ │ ├── AppDelegate.h │ │ ├── FinderToolDemo.entitlements │ │ ├── ViewController.m │ │ ├── AppDelegate.m │ │ └── Info.plist │ ├── FinderToolDemo.xcodeproj │ │ └── project.xcworkspace │ │ │ ├── contents.xcworkspacedata │ │ │ └── xcshareddata │ │ │ └── IDEWorkspaceChecks.plist │ └── FinderExtensionDemo │ │ ├── FinderSync.h │ │ ├── FinderExtensionDemo.entitlements │ │ └── Info.plist ├── SimulatorFinder │ ├── SimulatorFinder │ │ ├── Assets.xcassets │ │ │ ├── Contents.json │ │ │ ├── iphone.imageset │ │ │ │ ├── iphone.png │ │ │ │ └── Contents.json │ │ │ ├── statusIcon.imageset │ │ │ │ ├── statusIcon.png │ │ │ │ └── Contents.json │ │ │ ├── iphone-narmal.imageset │ │ │ │ ├── iphone-narmal.png │ │ │ │ └── Contents.json │ │ │ └── AppIcon.appiconset │ │ │ │ └── Contents.json │ │ ├── SimulatorFinder.entitlements │ │ ├── Model │ │ │ ├── OS.swift │ │ │ ├── App.swift │ │ │ └── Device.swift │ │ ├── Preference │ │ │ ├── TestViewConotroller.swift │ │ │ ├── AdvanceViewCotroller.swift │ │ │ ├── GeneralViewController.swift │ │ │ └── PTabViewController.swift │ │ ├── AppDelegate.swift │ │ ├── Shell │ │ │ └── Shell.swift │ │ ├── Info.plist │ │ ├── Menu │ │ │ ├── AppMenuItem.swift │ │ │ └── AppItemView.swift │ │ └── Manager │ │ │ ├── DeviceManager.swift │ │ │ └── PathManager.swift │ ├── Pods │ │ ├── Target Support Files │ │ │ ├── SwiftyJSON │ │ │ │ ├── SwiftyJSON.modulemap │ │ │ │ ├── SwiftyJSON-dummy.m │ │ │ │ ├── SwiftyJSON-prefix.pch │ │ │ │ ├── SwiftyJSON-umbrella.h │ │ │ │ ├── SwiftyJSON.xcconfig │ │ │ │ └── Info.plist │ │ │ └── Pods-SimulatorFinder │ │ │ │ ├── Pods-SimulatorFinder.modulemap │ │ │ │ ├── Pods-SimulatorFinder-dummy.m │ │ │ │ ├── Pods-SimulatorFinder-umbrella.h │ │ │ │ ├── Pods-SimulatorFinder.debug.xcconfig │ │ │ │ ├── Pods-SimulatorFinder.release.xcconfig │ │ │ │ ├── Info.plist │ │ │ │ └── Pods-SimulatorFinder-acknowledgements.markdown │ │ ├── Manifest.lock │ │ └── SwiftyJSON │ │ │ └── LICENSE │ ├── SimulatorFinder.xcodeproj │ │ └── project.xcworkspace │ │ │ └── contents.xcworkspacedata │ ├── Podfile.lock │ ├── SimulatorFinder.xcworkspace │ │ └── contents.xcworkspacedata │ └── Podfile ├── README.md └── Apple Event.md ├── README.md ├── LICENSE └── .gitignore /.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Alexiuce/macOStudy/HEAD/.DS_Store -------------------------------------------------------------------------------- /Folder/组件化.key: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Alexiuce/macOStudy/HEAD/Folder/组件化.key -------------------------------------------------------------------------------- /Folder/LCImageView/Gemfile: -------------------------------------------------------------------------------- 1 | source "https://rubygems.org" 2 | 3 | gem "fastlane" 4 | -------------------------------------------------------------------------------- /Folder/SimuLooker/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Alexiuce/macOStudy/HEAD/Folder/SimuLooker/.DS_Store -------------------------------------------------------------------------------- /Folder/SimulatorFinder.key: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Alexiuce/macOStudy/HEAD/Folder/SimulatorFinder.key -------------------------------------------------------------------------------- /Folder/LCImageView/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Alexiuce/macOStudy/HEAD/Folder/LCImageView/.DS_Store -------------------------------------------------------------------------------- /Folder/SimuLooker/SimuLooker/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Alexiuce/macOStudy/HEAD/Folder/SimuLooker/SimuLooker/.DS_Store -------------------------------------------------------------------------------- /Folder/SwiftQQ/SwiftQQ/Assets.xcassets/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "info" : { 3 | "version" : 1, 4 | "author" : "xcode" 5 | } 6 | } -------------------------------------------------------------------------------- /Folder/LCImageView/LCImageView/Assets.xcassets/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "info" : { 3 | "version" : 1, 4 | "author" : "xcode" 5 | } 6 | } -------------------------------------------------------------------------------- /Folder/SimuLooker/SimuLooker/Assets.xcassets/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "info" : { 3 | "version" : 1, 4 | "author" : "xcode" 5 | } 6 | } -------------------------------------------------------------------------------- /Folder/SwiftQQ/SwiftQQ/Assets.xcassets/Home/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "info" : { 3 | "version" : 1, 4 | "author" : "xcode" 5 | } 6 | } -------------------------------------------------------------------------------- /Folder/SwiftQQ/SwiftQQ/Assets.xcassets/Login/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "info" : { 3 | "version" : 1, 4 | "author" : "xcode" 5 | } 6 | } -------------------------------------------------------------------------------- /Folder/SwiftQQ/SwiftQQ/Assets.xcassets/Message/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "info" : { 3 | "version" : 1, 4 | "author" : "xcode" 5 | } 6 | } -------------------------------------------------------------------------------- /Folder/SwiftQQ/SwiftQQ/Assets.xcassets/ToolBar/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "info" : { 3 | "version" : 1, 4 | "author" : "xcode" 5 | } 6 | } -------------------------------------------------------------------------------- /Folder/FinderToolDemo/FinderToolDemo/Assets.xcassets/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "info" : { 3 | "version" : 1, 4 | "author" : "xcode" 5 | } 6 | } -------------------------------------------------------------------------------- /Folder/SimuLooker/SimuStartHelper/Assets.xcassets/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "info" : { 3 | "version" : 1, 4 | "author" : "xcode" 5 | } 6 | } -------------------------------------------------------------------------------- /Folder/SimulatorFinder/SimulatorFinder/Assets.xcassets/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "info" : { 3 | "version" : 1, 4 | "author" : "xcode" 5 | } 6 | } -------------------------------------------------------------------------------- /Folder/SwiftQQ/SwiftQQ/Assets.xcassets/Message/test.imageset/test.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Alexiuce/macOStudy/HEAD/Folder/SwiftQQ/SwiftQQ/Assets.xcassets/Message/test.imageset/test.jpg -------------------------------------------------------------------------------- /Folder/SimuLooker/SimuLooker/Assets.xcassets/iPhone.imageset/iPhone.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Alexiuce/macOStudy/HEAD/Folder/SimuLooker/SimuLooker/Assets.xcassets/iPhone.imageset/iPhone.png -------------------------------------------------------------------------------- /Folder/SwiftQQ/SwiftQQ/Assets.xcassets/Message/test1.imageset/test1.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Alexiuce/macOStudy/HEAD/Folder/SwiftQQ/SwiftQQ/Assets.xcassets/Message/test1.imageset/test1.jpg -------------------------------------------------------------------------------- /Folder/SimuLooker/SimuLooker/Assets.xcassets/iPhone.imageset/iPhone@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Alexiuce/macOStudy/HEAD/Folder/SimuLooker/SimuLooker/Assets.xcassets/iPhone.imageset/iPhone@2x.png -------------------------------------------------------------------------------- /Folder/SwiftQQ/SwiftQQ/Assets.xcassets/Login/bg-back.imageset/bg-back.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Alexiuce/macOStudy/HEAD/Folder/SwiftQQ/SwiftQQ/Assets.xcassets/Login/bg-back.imageset/bg-back.png -------------------------------------------------------------------------------- /Folder/SimuLooker/SimuLooker/Assets.xcassets/AppIcon.appiconset/phone160.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Alexiuce/macOStudy/HEAD/Folder/SimuLooker/SimuLooker/Assets.xcassets/AppIcon.appiconset/phone160.png -------------------------------------------------------------------------------- /Folder/SwiftQQ/SwiftQQ/Assets.xcassets/Login/bg-back.imageset/bg-back@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Alexiuce/macOStudy/HEAD/Folder/SwiftQQ/SwiftQQ/Assets.xcassets/Login/bg-back.imageset/bg-back@2x.png -------------------------------------------------------------------------------- /Folder/SimuLooker/Pods/Target Support Files/SwiftyJSON/SwiftyJSON.modulemap: -------------------------------------------------------------------------------- 1 | framework module SwiftyJSON { 2 | umbrella header "SwiftyJSON-umbrella.h" 3 | 4 | export * 5 | module * { export * } 6 | } 7 | -------------------------------------------------------------------------------- /Folder/SimuLooker/SimuLooker/Assets.xcassets/AppIcon.appiconset/phone160 2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Alexiuce/macOStudy/HEAD/Folder/SimuLooker/SimuLooker/Assets.xcassets/AppIcon.appiconset/phone160 2.png -------------------------------------------------------------------------------- /Folder/SimuLooker/SimuLooker/Assets.xcassets/AppIcon.appiconset/phone160-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Alexiuce/macOStudy/HEAD/Folder/SimuLooker/SimuLooker/Assets.xcassets/AppIcon.appiconset/phone160-1.png -------------------------------------------------------------------------------- /Folder/SimuLooker/SimuLooker/Assets.xcassets/simulooker.imageset/simulooker.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Alexiuce/macOStudy/HEAD/Folder/SimuLooker/SimuLooker/Assets.xcassets/simulooker.imageset/simulooker.png -------------------------------------------------------------------------------- /Folder/SwiftQQ/SwiftQQ/Assets.xcassets/Login/circle-big.imageset/circle-big.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Alexiuce/macOStudy/HEAD/Folder/SwiftQQ/SwiftQQ/Assets.xcassets/Login/circle-big.imageset/circle-big.png -------------------------------------------------------------------------------- /Folder/SwiftQQ/SwiftQQ/Assets.xcassets/Login/code_hover.imageset/code_hover.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Alexiuce/macOStudy/HEAD/Folder/SwiftQQ/SwiftQQ/Assets.xcassets/Login/code_hover.imageset/code_hover.png -------------------------------------------------------------------------------- /Folder/SimuLooker/Pods/Target Support Files/SwiftyJSON/SwiftyJSON-dummy.m: -------------------------------------------------------------------------------- 1 | #import 2 | @interface PodsDummy_SwiftyJSON : NSObject 3 | @end 4 | @implementation PodsDummy_SwiftyJSON 5 | @end 6 | -------------------------------------------------------------------------------- /Folder/SimuLooker/SimuLooker/Assets.xcassets/AppIcon.appiconset/phone160 2-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Alexiuce/macOStudy/HEAD/Folder/SimuLooker/SimuLooker/Assets.xcassets/AppIcon.appiconset/phone160 2-1.png -------------------------------------------------------------------------------- /Folder/SimuLooker/SimuLooker/Assets.xcassets/AppIcon.appiconset/phone160 2-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Alexiuce/macOStudy/HEAD/Folder/SimuLooker/SimuLooker/Assets.xcassets/AppIcon.appiconset/phone160 2-2.png -------------------------------------------------------------------------------- /Folder/SimuLooker/SimuLooker/Assets.xcassets/AppIcon.appiconset/phone160 2-3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Alexiuce/macOStudy/HEAD/Folder/SimuLooker/SimuLooker/Assets.xcassets/AppIcon.appiconset/phone160 2-3.png -------------------------------------------------------------------------------- /Folder/SimulatorFinder/Pods/Target Support Files/SwiftyJSON/SwiftyJSON.modulemap: -------------------------------------------------------------------------------- 1 | framework module SwiftyJSON { 2 | umbrella header "SwiftyJSON-umbrella.h" 3 | 4 | export * 5 | module * { export * } 6 | } 7 | -------------------------------------------------------------------------------- /Folder/SimulatorFinder/SimulatorFinder/Assets.xcassets/iphone.imageset/iphone.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Alexiuce/macOStudy/HEAD/Folder/SimulatorFinder/SimulatorFinder/Assets.xcassets/iphone.imageset/iphone.png -------------------------------------------------------------------------------- /Folder/SwiftQQ/SwiftQQ/Assets.xcassets/Login/circle-big.imageset/circle-big@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Alexiuce/macOStudy/HEAD/Folder/SwiftQQ/SwiftQQ/Assets.xcassets/Login/circle-big.imageset/circle-big@2x.png -------------------------------------------------------------------------------- /Folder/SwiftQQ/SwiftQQ/Assets.xcassets/Login/code_hover.imageset/code_hover@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Alexiuce/macOStudy/HEAD/Folder/SwiftQQ/SwiftQQ/Assets.xcassets/Login/code_hover.imageset/code_hover@2x.png -------------------------------------------------------------------------------- /Folder/SwiftQQ/SwiftQQ/Assets.xcassets/Login/code_normal.imageset/code_normal.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Alexiuce/macOStudy/HEAD/Folder/SwiftQQ/SwiftQQ/Assets.xcassets/Login/code_normal.imageset/code_normal.png -------------------------------------------------------------------------------- /Folder/SwiftQQ/SwiftQQ/Assets.xcassets/Login/head-normal.imageset/head-normal.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Alexiuce/macOStudy/HEAD/Folder/SwiftQQ/SwiftQQ/Assets.xcassets/Login/head-normal.imageset/head-normal.png -------------------------------------------------------------------------------- /Folder/SimulatorFinder/Pods/Target Support Files/SwiftyJSON/SwiftyJSON-dummy.m: -------------------------------------------------------------------------------- 1 | #import 2 | @interface PodsDummy_SwiftyJSON : NSObject 3 | @end 4 | @implementation PodsDummy_SwiftyJSON 5 | @end 6 | -------------------------------------------------------------------------------- /Folder/SwiftQQ/SwiftQQ/Assets.xcassets/Login/code_normal.imageset/code_normal@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Alexiuce/macOStudy/HEAD/Folder/SwiftQQ/SwiftQQ/Assets.xcassets/Login/code_normal.imageset/code_normal@2x.png -------------------------------------------------------------------------------- /Folder/SwiftQQ/SwiftQQ/Assets.xcassets/Login/head-normal.imageset/head-normal@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Alexiuce/macOStudy/HEAD/Folder/SwiftQQ/SwiftQQ/Assets.xcassets/Login/head-normal.imageset/head-normal@2x.png -------------------------------------------------------------------------------- /Folder/SwiftQQ/SwiftQQ/Assets.xcassets/Login/input-bottom.imageset/input-bottom.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Alexiuce/macOStudy/HEAD/Folder/SwiftQQ/SwiftQQ/Assets.xcassets/Login/input-bottom.imageset/input-bottom.png -------------------------------------------------------------------------------- /Folder/LCImageView/LCImageView/Assets.xcassets/loginIcon.imageset/WX20170419-165655.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Alexiuce/macOStudy/HEAD/Folder/LCImageView/LCImageView/Assets.xcassets/loginIcon.imageset/WX20170419-165655.png -------------------------------------------------------------------------------- /Folder/SimuLooker/SimuLooker/Assets.xcassets/StatusItemIcon.imageset/phone160 2-3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Alexiuce/macOStudy/HEAD/Folder/SimuLooker/SimuLooker/Assets.xcassets/StatusItemIcon.imageset/phone160 2-3.png -------------------------------------------------------------------------------- /Folder/SwiftQQ/SwiftQQ/Assets.xcassets/Home/menu-more-down.imageset/menu-more-down.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Alexiuce/macOStudy/HEAD/Folder/SwiftQQ/SwiftQQ/Assets.xcassets/Home/menu-more-down.imageset/menu-more-down.png -------------------------------------------------------------------------------- /Folder/SwiftQQ/SwiftQQ/Assets.xcassets/Login/input-bottom.imageset/input-bottom@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Alexiuce/macOStudy/HEAD/Folder/SwiftQQ/SwiftQQ/Assets.xcassets/Login/input-bottom.imageset/input-bottom@2x.png -------------------------------------------------------------------------------- /Folder/SwiftQQ/SwiftQQ/Assets.xcassets/Login/loading-circle.imageset/loading-circle.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Alexiuce/macOStudy/HEAD/Folder/SwiftQQ/SwiftQQ/Assets.xcassets/Login/loading-circle.imageset/loading-circle.png -------------------------------------------------------------------------------- /Folder/SimuLooker/Pods/Target Support Files/Pods-SimuLooker/Pods-SimuLooker.modulemap: -------------------------------------------------------------------------------- 1 | framework module Pods_SimuLooker { 2 | umbrella header "Pods-SimuLooker-umbrella.h" 3 | 4 | export * 5 | module * { export * } 6 | } 7 | -------------------------------------------------------------------------------- /Folder/SimulatorFinder/SimulatorFinder/Assets.xcassets/statusIcon.imageset/statusIcon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Alexiuce/macOStudy/HEAD/Folder/SimulatorFinder/SimulatorFinder/Assets.xcassets/statusIcon.imageset/statusIcon.png -------------------------------------------------------------------------------- /Folder/SwiftQQ/SwiftQQ/Assets.xcassets/Home/menu-more-down.imageset/menu-more-down@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Alexiuce/macOStudy/HEAD/Folder/SwiftQQ/SwiftQQ/Assets.xcassets/Home/menu-more-down.imageset/menu-more-down@2x.png -------------------------------------------------------------------------------- /Folder/SwiftQQ/SwiftQQ/Assets.xcassets/Login/Icon-Arrow-down.imageset/Icon-Arrow-down.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Alexiuce/macOStudy/HEAD/Folder/SwiftQQ/SwiftQQ/Assets.xcassets/Login/Icon-Arrow-down.imageset/Icon-Arrow-down.png -------------------------------------------------------------------------------- /Folder/SwiftQQ/SwiftQQ/Assets.xcassets/Login/icon-enter-down.imageset/icon-enter-down.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Alexiuce/macOStudy/HEAD/Folder/SwiftQQ/SwiftQQ/Assets.xcassets/Login/icon-enter-down.imageset/icon-enter-down.png -------------------------------------------------------------------------------- /Folder/SwiftQQ/SwiftQQ/Assets.xcassets/Login/icon-enter-undo.imageset/icon-enter-undo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Alexiuce/macOStudy/HEAD/Folder/SwiftQQ/SwiftQQ/Assets.xcassets/Login/icon-enter-undo.imageset/icon-enter-undo.png -------------------------------------------------------------------------------- /Folder/SimuLooker/Pods/Target Support Files/Pods-SimuLooker/Pods-SimuLooker-dummy.m: -------------------------------------------------------------------------------- 1 | #import 2 | @interface PodsDummy_Pods_SimuLooker : NSObject 3 | @end 4 | @implementation PodsDummy_Pods_SimuLooker 5 | @end 6 | -------------------------------------------------------------------------------- /Folder/SwiftQQ/SwiftQQ/Assets.xcassets/Home/menu-contact-down.imageset/menu-contact-down.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Alexiuce/macOStudy/HEAD/Folder/SwiftQQ/SwiftQQ/Assets.xcassets/Home/menu-contact-down.imageset/menu-contact-down.png -------------------------------------------------------------------------------- /Folder/SwiftQQ/SwiftQQ/Assets.xcassets/Home/menu-message-down.imageset/menu-message-down.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Alexiuce/macOStudy/HEAD/Folder/SwiftQQ/SwiftQQ/Assets.xcassets/Home/menu-message-down.imageset/menu-message-down.png -------------------------------------------------------------------------------- /Folder/SwiftQQ/SwiftQQ/Assets.xcassets/Home/menu-more-normal.imageset/menu-more-normal.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Alexiuce/macOStudy/HEAD/Folder/SwiftQQ/SwiftQQ/Assets.xcassets/Home/menu-more-normal.imageset/menu-more-normal.png -------------------------------------------------------------------------------- /Folder/SwiftQQ/SwiftQQ/Assets.xcassets/Login/Icon-Arrow-down.imageset/Icon-Arrow-down@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Alexiuce/macOStudy/HEAD/Folder/SwiftQQ/SwiftQQ/Assets.xcassets/Login/Icon-Arrow-down.imageset/Icon-Arrow-down@2x.png -------------------------------------------------------------------------------- /Folder/SwiftQQ/SwiftQQ/Assets.xcassets/Login/Icon-Arrow-hover.imageset/Icon-Arrow-hover.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Alexiuce/macOStudy/HEAD/Folder/SwiftQQ/SwiftQQ/Assets.xcassets/Login/Icon-Arrow-hover.imageset/Icon-Arrow-hover.png -------------------------------------------------------------------------------- /Folder/SwiftQQ/SwiftQQ/Assets.xcassets/Login/icon-enter-down.imageset/icon-enter-down@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Alexiuce/macOStudy/HEAD/Folder/SwiftQQ/SwiftQQ/Assets.xcassets/Login/icon-enter-down.imageset/icon-enter-down@2x.png -------------------------------------------------------------------------------- /Folder/SwiftQQ/SwiftQQ/Assets.xcassets/Login/icon-enter-hover.imageset/icon-enter-hover.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Alexiuce/macOStudy/HEAD/Folder/SwiftQQ/SwiftQQ/Assets.xcassets/Login/icon-enter-hover.imageset/icon-enter-hover.png -------------------------------------------------------------------------------- /Folder/SwiftQQ/SwiftQQ/Assets.xcassets/Login/icon-enter-undo.imageset/icon-enter-undo@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Alexiuce/macOStudy/HEAD/Folder/SwiftQQ/SwiftQQ/Assets.xcassets/Login/icon-enter-undo.imageset/icon-enter-undo@2x.png -------------------------------------------------------------------------------- /Folder/SwiftQQ/SwiftQQ/Assets.xcassets/Login/loading-circle.imageset/loading-circle@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Alexiuce/macOStudy/HEAD/Folder/SwiftQQ/SwiftQQ/Assets.xcassets/Login/loading-circle.imageset/loading-circle@2x.png -------------------------------------------------------------------------------- /Folder/SwiftQQ/SwiftQQ/Assets.xcassets/Home/menu-more-normal.imageset/menu-more-normal@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Alexiuce/macOStudy/HEAD/Folder/SwiftQQ/SwiftQQ/Assets.xcassets/Home/menu-more-normal.imageset/menu-more-normal@2x.png -------------------------------------------------------------------------------- /Folder/SwiftQQ/SwiftQQ/Assets.xcassets/Login/Icon-Arrow-hover.imageset/Icon-Arrow-hover@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Alexiuce/macOStudy/HEAD/Folder/SwiftQQ/SwiftQQ/Assets.xcassets/Login/Icon-Arrow-hover.imageset/Icon-Arrow-hover@2x.png -------------------------------------------------------------------------------- /Folder/SwiftQQ/SwiftQQ/Assets.xcassets/Login/Icon-Arrow-normal.imageset/Icon-Arrow-normal.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Alexiuce/macOStudy/HEAD/Folder/SwiftQQ/SwiftQQ/Assets.xcassets/Login/Icon-Arrow-normal.imageset/Icon-Arrow-normal.png -------------------------------------------------------------------------------- /Folder/SwiftQQ/SwiftQQ/Assets.xcassets/Login/Icon-choose-hover.imageset/Icon-choose-hover.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Alexiuce/macOStudy/HEAD/Folder/SwiftQQ/SwiftQQ/Assets.xcassets/Login/Icon-choose-hover.imageset/Icon-choose-hover.png -------------------------------------------------------------------------------- /Folder/SwiftQQ/SwiftQQ/Assets.xcassets/Login/icon-close-normal.imageset/icon-close-normal.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Alexiuce/macOStudy/HEAD/Folder/SwiftQQ/SwiftQQ/Assets.xcassets/Login/icon-close-normal.imageset/icon-close-normal.png -------------------------------------------------------------------------------- /Folder/SwiftQQ/SwiftQQ/Assets.xcassets/Login/icon-enter-hover.imageset/icon-enter-hover@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Alexiuce/macOStudy/HEAD/Folder/SwiftQQ/SwiftQQ/Assets.xcassets/Login/icon-enter-hover.imageset/icon-enter-hover@2x.png -------------------------------------------------------------------------------- /Folder/SwiftQQ/SwiftQQ/Assets.xcassets/Login/icon-enter-normal.imageset/icon-enter-normal.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Alexiuce/macOStudy/HEAD/Folder/SwiftQQ/SwiftQQ/Assets.xcassets/Login/icon-enter-normal.imageset/icon-enter-normal.png -------------------------------------------------------------------------------- /Folder/SimulatorFinder/SimulatorFinder/Assets.xcassets/iphone-narmal.imageset/iphone-narmal.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Alexiuce/macOStudy/HEAD/Folder/SimulatorFinder/SimulatorFinder/Assets.xcassets/iphone-narmal.imageset/iphone-narmal.png -------------------------------------------------------------------------------- /Folder/SwiftQQ/SwiftQQ/Assets.xcassets/Home/menu-contact-down.imageset/menu-contact-down@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Alexiuce/macOStudy/HEAD/Folder/SwiftQQ/SwiftQQ/Assets.xcassets/Home/menu-contact-down.imageset/menu-contact-down@2x.png -------------------------------------------------------------------------------- /Folder/SwiftQQ/SwiftQQ/Assets.xcassets/Home/menu-contact-normal.imageset/menu-contact-normal.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Alexiuce/macOStudy/HEAD/Folder/SwiftQQ/SwiftQQ/Assets.xcassets/Home/menu-contact-normal.imageset/menu-contact-normal.png -------------------------------------------------------------------------------- /Folder/SwiftQQ/SwiftQQ/Assets.xcassets/Home/menu-message-down.imageset/menu-message-down@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Alexiuce/macOStudy/HEAD/Folder/SwiftQQ/SwiftQQ/Assets.xcassets/Home/menu-message-down.imageset/menu-message-down@2x.png -------------------------------------------------------------------------------- /Folder/SwiftQQ/SwiftQQ/Assets.xcassets/Home/menu-message-normal.imageset/menu-message-normal.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Alexiuce/macOStudy/HEAD/Folder/SwiftQQ/SwiftQQ/Assets.xcassets/Home/menu-message-normal.imageset/menu-message-normal.png -------------------------------------------------------------------------------- /Folder/SwiftQQ/SwiftQQ/Assets.xcassets/Login/Icon-Arrow-normal.imageset/Icon-Arrow-normal@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Alexiuce/macOStudy/HEAD/Folder/SwiftQQ/SwiftQQ/Assets.xcassets/Login/Icon-Arrow-normal.imageset/Icon-Arrow-normal@2x.png -------------------------------------------------------------------------------- /Folder/SwiftQQ/SwiftQQ/Assets.xcassets/Login/Icon-choose-hover.imageset/Icon-choose-hover@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Alexiuce/macOStudy/HEAD/Folder/SwiftQQ/SwiftQQ/Assets.xcassets/Login/Icon-choose-hover.imageset/Icon-choose-hover@2x.png -------------------------------------------------------------------------------- /Folder/SwiftQQ/SwiftQQ/Assets.xcassets/Login/cell_checkbox_hover.imageset/cell_checkbox_hover.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Alexiuce/macOStudy/HEAD/Folder/SwiftQQ/SwiftQQ/Assets.xcassets/Login/cell_checkbox_hover.imageset/cell_checkbox_hover.png -------------------------------------------------------------------------------- /Folder/SwiftQQ/SwiftQQ/Assets.xcassets/Login/icon-close-normal.imageset/icon-close-normal@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Alexiuce/macOStudy/HEAD/Folder/SwiftQQ/SwiftQQ/Assets.xcassets/Login/icon-close-normal.imageset/icon-close-normal@2x.png -------------------------------------------------------------------------------- /Folder/SwiftQQ/SwiftQQ/Assets.xcassets/Login/icon-enter-normal.imageset/icon-enter-normal@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Alexiuce/macOStudy/HEAD/Folder/SwiftQQ/SwiftQQ/Assets.xcassets/Login/icon-enter-normal.imageset/icon-enter-normal@2x.png -------------------------------------------------------------------------------- /Folder/SwiftQQ/SwiftQQ/Assets.xcassets/ToolBar/toolbar_files_down.imageset/toolbar_files_down.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Alexiuce/macOStudy/HEAD/Folder/SwiftQQ/SwiftQQ/Assets.xcassets/ToolBar/toolbar_files_down.imageset/toolbar_files_down.png -------------------------------------------------------------------------------- /Folder/SwiftQQ/SwiftQQ/Assets.xcassets/ToolBar/toolbar_phone_down.imageset/toolbar_phone_down.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Alexiuce/macOStudy/HEAD/Folder/SwiftQQ/SwiftQQ/Assets.xcassets/ToolBar/toolbar_phone_down.imageset/toolbar_phone_down.png -------------------------------------------------------------------------------- /Folder/SwiftQQ/SwiftQQ/Assets.xcassets/ToolBar/toolbar_shake_down.imageset/toolbar_shake_down.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Alexiuce/macOStudy/HEAD/Folder/SwiftQQ/SwiftQQ/Assets.xcassets/ToolBar/toolbar_shake_down.imageset/toolbar_shake_down.png -------------------------------------------------------------------------------- /Folder/SwiftQQ/SwiftQQ/Assets.xcassets/Home/menu-contact-normal.imageset/menu-contact-normal@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Alexiuce/macOStudy/HEAD/Folder/SwiftQQ/SwiftQQ/Assets.xcassets/Home/menu-contact-normal.imageset/menu-contact-normal@2x.png -------------------------------------------------------------------------------- /Folder/SwiftQQ/SwiftQQ/Assets.xcassets/Home/menu-message-normal.imageset/menu-message-normal@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Alexiuce/macOStudy/HEAD/Folder/SwiftQQ/SwiftQQ/Assets.xcassets/Home/menu-message-normal.imageset/menu-message-normal@2x.png -------------------------------------------------------------------------------- /Folder/SwiftQQ/SwiftQQ/Assets.xcassets/Login/cell_checkbox_normal.imageset/cell_checkbox_normal.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Alexiuce/macOStudy/HEAD/Folder/SwiftQQ/SwiftQQ/Assets.xcassets/Login/cell_checkbox_normal.imageset/cell_checkbox_normal.png -------------------------------------------------------------------------------- /Folder/SwiftQQ/SwiftQQ/Assets.xcassets/ToolBar/toolbar_files_hover.imageset/toolbar_files_hover.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Alexiuce/macOStudy/HEAD/Folder/SwiftQQ/SwiftQQ/Assets.xcassets/ToolBar/toolbar_files_hover.imageset/toolbar_files_hover.png -------------------------------------------------------------------------------- /Folder/SwiftQQ/SwiftQQ/Assets.xcassets/ToolBar/toolbar_phone_hover.imageset/toolbar_phone_hover.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Alexiuce/macOStudy/HEAD/Folder/SwiftQQ/SwiftQQ/Assets.xcassets/ToolBar/toolbar_phone_hover.imageset/toolbar_phone_hover.png -------------------------------------------------------------------------------- /Folder/SwiftQQ/SwiftQQ/Assets.xcassets/ToolBar/toolbar_shake_hover.imageset/toolbar_shake_hover.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Alexiuce/macOStudy/HEAD/Folder/SwiftQQ/SwiftQQ/Assets.xcassets/ToolBar/toolbar_shake_hover.imageset/toolbar_shake_hover.png -------------------------------------------------------------------------------- /Folder/SimulatorFinder/Pods/Target Support Files/Pods-SimulatorFinder/Pods-SimulatorFinder.modulemap: -------------------------------------------------------------------------------- 1 | framework module Pods_SimulatorFinder { 2 | umbrella header "Pods-SimulatorFinder-umbrella.h" 3 | 4 | export * 5 | module * { export * } 6 | } 7 | -------------------------------------------------------------------------------- /Folder/SwiftQQ/SwiftQQ.xcodeproj/project.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /Folder/SwiftQQ/SwiftQQ/Assets.xcassets/Login/cell_checkbox_checked.imageset/cell_checkbox_checked.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Alexiuce/macOStudy/HEAD/Folder/SwiftQQ/SwiftQQ/Assets.xcassets/Login/cell_checkbox_checked.imageset/cell_checkbox_checked.png -------------------------------------------------------------------------------- /Folder/SwiftQQ/SwiftQQ/Assets.xcassets/Login/cell_checkbox_hover.imageset/cell_checkbox_hover@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Alexiuce/macOStudy/HEAD/Folder/SwiftQQ/SwiftQQ/Assets.xcassets/Login/cell_checkbox_hover.imageset/cell_checkbox_hover@2x.png -------------------------------------------------------------------------------- /Folder/SwiftQQ/SwiftQQ/Assets.xcassets/Login/cell_checkbox_normal.imageset/cell_checkbox_normal@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Alexiuce/macOStudy/HEAD/Folder/SwiftQQ/SwiftQQ/Assets.xcassets/Login/cell_checkbox_normal.imageset/cell_checkbox_normal@2x.png -------------------------------------------------------------------------------- /Folder/SwiftQQ/SwiftQQ/Assets.xcassets/ToolBar/toolbar_files_down.imageset/toolbar_files_down@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Alexiuce/macOStudy/HEAD/Folder/SwiftQQ/SwiftQQ/Assets.xcassets/ToolBar/toolbar_files_down.imageset/toolbar_files_down@2x.png -------------------------------------------------------------------------------- /Folder/SwiftQQ/SwiftQQ/Assets.xcassets/ToolBar/toolbar_files_hover.imageset/toolbar_files_hover@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Alexiuce/macOStudy/HEAD/Folder/SwiftQQ/SwiftQQ/Assets.xcassets/ToolBar/toolbar_files_hover.imageset/toolbar_files_hover@2x.png -------------------------------------------------------------------------------- /Folder/SwiftQQ/SwiftQQ/Assets.xcassets/ToolBar/toolbar_files_normal.imageset/toolbar_files_normal.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Alexiuce/macOStudy/HEAD/Folder/SwiftQQ/SwiftQQ/Assets.xcassets/ToolBar/toolbar_files_normal.imageset/toolbar_files_normal.png -------------------------------------------------------------------------------- /Folder/SwiftQQ/SwiftQQ/Assets.xcassets/ToolBar/toolbar_history_down.imageset/toolbar_history_down.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Alexiuce/macOStudy/HEAD/Folder/SwiftQQ/SwiftQQ/Assets.xcassets/ToolBar/toolbar_history_down.imageset/toolbar_history_down.png -------------------------------------------------------------------------------- /Folder/SwiftQQ/SwiftQQ/Assets.xcassets/ToolBar/toolbar_phone_down.imageset/toolbar_phone_down@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Alexiuce/macOStudy/HEAD/Folder/SwiftQQ/SwiftQQ/Assets.xcassets/ToolBar/toolbar_phone_down.imageset/toolbar_phone_down@2x.png -------------------------------------------------------------------------------- /Folder/SwiftQQ/SwiftQQ/Assets.xcassets/ToolBar/toolbar_phone_hover.imageset/toolbar_phone_hover@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Alexiuce/macOStudy/HEAD/Folder/SwiftQQ/SwiftQQ/Assets.xcassets/ToolBar/toolbar_phone_hover.imageset/toolbar_phone_hover@2x.png -------------------------------------------------------------------------------- /Folder/SwiftQQ/SwiftQQ/Assets.xcassets/ToolBar/toolbar_phone_normal.imageset/toolbar_phone_normal.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Alexiuce/macOStudy/HEAD/Folder/SwiftQQ/SwiftQQ/Assets.xcassets/ToolBar/toolbar_phone_normal.imageset/toolbar_phone_normal.png -------------------------------------------------------------------------------- /Folder/SwiftQQ/SwiftQQ/Assets.xcassets/ToolBar/toolbar_shake_down.imageset/toolbar_shake_down@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Alexiuce/macOStudy/HEAD/Folder/SwiftQQ/SwiftQQ/Assets.xcassets/ToolBar/toolbar_shake_down.imageset/toolbar_shake_down@2x.png -------------------------------------------------------------------------------- /Folder/SwiftQQ/SwiftQQ/Assets.xcassets/ToolBar/toolbar_shake_hover.imageset/toolbar_shake_hover@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Alexiuce/macOStudy/HEAD/Folder/SwiftQQ/SwiftQQ/Assets.xcassets/ToolBar/toolbar_shake_hover.imageset/toolbar_shake_hover@2x.png -------------------------------------------------------------------------------- /Folder/SwiftQQ/SwiftQQ/Assets.xcassets/ToolBar/toolbar_shake_normal.imageset/toolbar_shake_normal.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Alexiuce/macOStudy/HEAD/Folder/SwiftQQ/SwiftQQ/Assets.xcassets/ToolBar/toolbar_shake_normal.imageset/toolbar_shake_normal.png -------------------------------------------------------------------------------- /Folder/SimulatorFinder/Pods/Target Support Files/Pods-SimulatorFinder/Pods-SimulatorFinder-dummy.m: -------------------------------------------------------------------------------- 1 | #import 2 | @interface PodsDummy_Pods_SimulatorFinder : NSObject 3 | @end 4 | @implementation PodsDummy_Pods_SimulatorFinder 5 | @end 6 | -------------------------------------------------------------------------------- /Folder/SwiftQQ/SwiftQQ/Assets.xcassets/Login/cell_checkbox_checked.imageset/cell_checkbox_checked@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Alexiuce/macOStudy/HEAD/Folder/SwiftQQ/SwiftQQ/Assets.xcassets/Login/cell_checkbox_checked.imageset/cell_checkbox_checked@2x.png -------------------------------------------------------------------------------- /Folder/SwiftQQ/SwiftQQ/Assets.xcassets/ToolBar/toolbar_emoticon_down.imageset/toolbar_emoticon_down.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Alexiuce/macOStudy/HEAD/Folder/SwiftQQ/SwiftQQ/Assets.xcassets/ToolBar/toolbar_emoticon_down.imageset/toolbar_emoticon_down.png -------------------------------------------------------------------------------- /Folder/SwiftQQ/SwiftQQ/Assets.xcassets/ToolBar/toolbar_files_normal.imageset/toolbar_files_normal@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Alexiuce/macOStudy/HEAD/Folder/SwiftQQ/SwiftQQ/Assets.xcassets/ToolBar/toolbar_files_normal.imageset/toolbar_files_normal@2x.png -------------------------------------------------------------------------------- /Folder/SwiftQQ/SwiftQQ/Assets.xcassets/ToolBar/toolbar_history_down.imageset/toolbar_history_down@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Alexiuce/macOStudy/HEAD/Folder/SwiftQQ/SwiftQQ/Assets.xcassets/ToolBar/toolbar_history_down.imageset/toolbar_history_down@2x.png -------------------------------------------------------------------------------- /Folder/SwiftQQ/SwiftQQ/Assets.xcassets/ToolBar/toolbar_history_hover.imageset/toolbar_history_hover.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Alexiuce/macOStudy/HEAD/Folder/SwiftQQ/SwiftQQ/Assets.xcassets/ToolBar/toolbar_history_hover.imageset/toolbar_history_hover.png -------------------------------------------------------------------------------- /Folder/SwiftQQ/SwiftQQ/Assets.xcassets/ToolBar/toolbar_phone_normal.imageset/toolbar_phone_normal@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Alexiuce/macOStudy/HEAD/Folder/SwiftQQ/SwiftQQ/Assets.xcassets/ToolBar/toolbar_phone_normal.imageset/toolbar_phone_normal@2x.png -------------------------------------------------------------------------------- /Folder/SwiftQQ/SwiftQQ/Assets.xcassets/ToolBar/toolbar_shake_normal.imageset/toolbar_shake_normal@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Alexiuce/macOStudy/HEAD/Folder/SwiftQQ/SwiftQQ/Assets.xcassets/ToolBar/toolbar_shake_normal.imageset/toolbar_shake_normal@2x.png -------------------------------------------------------------------------------- /Folder/SimuLooker/SimuLooker.xcodeproj/project.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /Folder/SimulatorFinder/SimulatorFinder/SimulatorFinder.entitlements: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /Folder/SwiftQQ/SwiftQQ/Assets.xcassets/ToolBar/toolbar_emoticon_down.imageset/toolbar_emoticon_down@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Alexiuce/macOStudy/HEAD/Folder/SwiftQQ/SwiftQQ/Assets.xcassets/ToolBar/toolbar_emoticon_down.imageset/toolbar_emoticon_down@2x.png -------------------------------------------------------------------------------- /Folder/SwiftQQ/SwiftQQ/Assets.xcassets/ToolBar/toolbar_emoticon_hover.imageset/toolbar_emoticon_hover.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Alexiuce/macOStudy/HEAD/Folder/SwiftQQ/SwiftQQ/Assets.xcassets/ToolBar/toolbar_emoticon_hover.imageset/toolbar_emoticon_hover.png -------------------------------------------------------------------------------- /Folder/SwiftQQ/SwiftQQ/Assets.xcassets/ToolBar/toolbar_emoticon_normal.imageset/toolbar_emoticon_normal.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Alexiuce/macOStudy/HEAD/Folder/SwiftQQ/SwiftQQ/Assets.xcassets/ToolBar/toolbar_emoticon_normal.imageset/toolbar_emoticon_normal.png -------------------------------------------------------------------------------- /Folder/SwiftQQ/SwiftQQ/Assets.xcassets/ToolBar/toolbar_history_hover.imageset/toolbar_history_hover@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Alexiuce/macOStudy/HEAD/Folder/SwiftQQ/SwiftQQ/Assets.xcassets/ToolBar/toolbar_history_hover.imageset/toolbar_history_hover@2x.png -------------------------------------------------------------------------------- /Folder/SwiftQQ/SwiftQQ/Assets.xcassets/ToolBar/toolbar_history_normal.imageset/toolbar_history_normal.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Alexiuce/macOStudy/HEAD/Folder/SwiftQQ/SwiftQQ/Assets.xcassets/ToolBar/toolbar_history_normal.imageset/toolbar_history_normal.png -------------------------------------------------------------------------------- /Folder/LCImageView/LCImageView.xcodeproj/project.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /Folder/SwiftQQ/SwiftQQ/Assets.xcassets/ToolBar/toolbar_emoticon_hover.imageset/toolbar_emoticon_hover@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Alexiuce/macOStudy/HEAD/Folder/SwiftQQ/SwiftQQ/Assets.xcassets/ToolBar/toolbar_emoticon_hover.imageset/toolbar_emoticon_hover@2x.png -------------------------------------------------------------------------------- /Folder/SwiftQQ/SwiftQQ/Assets.xcassets/ToolBar/toolbar_history_normal.imageset/toolbar_history_normal@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Alexiuce/macOStudy/HEAD/Folder/SwiftQQ/SwiftQQ/Assets.xcassets/ToolBar/toolbar_history_normal.imageset/toolbar_history_normal@2x.png -------------------------------------------------------------------------------- /Folder/FinderToolDemo/FinderToolDemo.xcodeproj/project.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /Folder/SwiftQQ/SwiftQQ/Assets.xcassets/ToolBar/toolbar_emoticon_normal.imageset/toolbar_emoticon_normal@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Alexiuce/macOStudy/HEAD/Folder/SwiftQQ/SwiftQQ/Assets.xcassets/ToolBar/toolbar_emoticon_normal.imageset/toolbar_emoticon_normal@2x.png -------------------------------------------------------------------------------- /Folder/SimulatorFinder/SimulatorFinder.xcodeproj/project.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /Folder/SwiftQQ/SwiftQQ/Assets.xcassets/ToolBar/toolbar_screenCapture_down.imageset/toolbar_screenCapture_down.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Alexiuce/macOStudy/HEAD/Folder/SwiftQQ/SwiftQQ/Assets.xcassets/ToolBar/toolbar_screenCapture_down.imageset/toolbar_screenCapture_down.png -------------------------------------------------------------------------------- /Folder/SwiftQQ/SwiftQQ/Assets.xcassets/ToolBar/toolbar_screenCapture_down.imageset/toolbar_screenCapture_down@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Alexiuce/macOStudy/HEAD/Folder/SwiftQQ/SwiftQQ/Assets.xcassets/ToolBar/toolbar_screenCapture_down.imageset/toolbar_screenCapture_down@2x.png -------------------------------------------------------------------------------- /Folder/SwiftQQ/SwiftQQ/Assets.xcassets/ToolBar/toolbar_screenCapture_hover.imageset/toolbar_screenCapture_hover.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Alexiuce/macOStudy/HEAD/Folder/SwiftQQ/SwiftQQ/Assets.xcassets/ToolBar/toolbar_screenCapture_hover.imageset/toolbar_screenCapture_hover.png -------------------------------------------------------------------------------- /Folder/SwiftQQ/SwiftQQ/Assets.xcassets/ToolBar/toolbar_screenCapture_normal.imageset/toolbar_screenCapture_normal.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Alexiuce/macOStudy/HEAD/Folder/SwiftQQ/SwiftQQ/Assets.xcassets/ToolBar/toolbar_screenCapture_normal.imageset/toolbar_screenCapture_normal.png -------------------------------------------------------------------------------- /Folder/LCImageView/fastlane/Appfile: -------------------------------------------------------------------------------- 1 | # app_identifier("[[APP_IDENTIFIER]]") # The bundle identifier of your app 2 | # apple_id("[[APPLE_ID]]") # Your Apple email address 3 | 4 | 5 | # For more information about the Appfile, see: 6 | # https://docs.fastlane.tools/advanced/#appfile 7 | -------------------------------------------------------------------------------- /Folder/SwiftQQ/SwiftQQ/Assets.xcassets/ToolBar/toolbar_screenCapture_hover.imageset/toolbar_screenCapture_hover@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Alexiuce/macOStudy/HEAD/Folder/SwiftQQ/SwiftQQ/Assets.xcassets/ToolBar/toolbar_screenCapture_hover.imageset/toolbar_screenCapture_hover@2x.png -------------------------------------------------------------------------------- /Folder/SwiftQQ/SwiftQQ/Assets.xcassets/Login/LoginWindow_BigDefaultHeadImage.imageset/LoginWindow_BigDefaultHeadImage.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Alexiuce/macOStudy/HEAD/Folder/SwiftQQ/SwiftQQ/Assets.xcassets/Login/LoginWindow_BigDefaultHeadImage.imageset/LoginWindow_BigDefaultHeadImage.png -------------------------------------------------------------------------------- /Folder/SwiftQQ/SwiftQQ/Assets.xcassets/ToolBar/toolbar_screenCapture_normal.imageset/toolbar_screenCapture_normal@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Alexiuce/macOStudy/HEAD/Folder/SwiftQQ/SwiftQQ/Assets.xcassets/ToolBar/toolbar_screenCapture_normal.imageset/toolbar_screenCapture_normal@2x.png -------------------------------------------------------------------------------- /Folder/README.md: -------------------------------------------------------------------------------- 1 | ## macOStudy 2 | ![](https://img.shields.io/badge/platform-MacOSX-red.svg) 3 | ![](https://img.shields.io/badge/Language-swift4.0-orange.svg) 4 | 5 | MacOS 进阶项目项目简介 6 | 7 | * SwiftQQ(模仿macOS 版QQ) 8 | * 项目组件化实战 (技术要点) 9 | * SimulatorFinder (查看Xcode 模拟器应用) 10 | 11 | 12 | -------------------------------------------------------------------------------- /Folder/SwiftQQ/SwiftQQ/Assets.xcassets/Login/LoginWindow_BigDefaultHeadImage.imageset/LoginWindow_BigDefaultHeadImage@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Alexiuce/macOStudy/HEAD/Folder/SwiftQQ/SwiftQQ/Assets.xcassets/Login/LoginWindow_BigDefaultHeadImage.imageset/LoginWindow_BigDefaultHeadImage@2x.png -------------------------------------------------------------------------------- /Folder/SimuLooker/Podfile.lock: -------------------------------------------------------------------------------- 1 | PODS: 2 | - SwiftyJSON (4.0.0) 3 | 4 | DEPENDENCIES: 5 | - SwiftyJSON 6 | 7 | SPEC CHECKSUMS: 8 | SwiftyJSON: 070dabdcb1beb81b247c65ffa3a79dbbfb3b48aa 9 | 10 | PODFILE CHECKSUM: e2efbd54d3deb9d51f123dcc904521509ccbe882 11 | 12 | COCOAPODS: 1.4.0.rc.1 13 | -------------------------------------------------------------------------------- /Folder/SimulatorFinder/Podfile.lock: -------------------------------------------------------------------------------- 1 | PODS: 2 | - SwiftyJSON (4.0.0) 3 | 4 | DEPENDENCIES: 5 | - SwiftyJSON 6 | 7 | SPEC CHECKSUMS: 8 | SwiftyJSON: 070dabdcb1beb81b247c65ffa3a79dbbfb3b48aa 9 | 10 | PODFILE CHECKSUM: 0b2fe21fdbcde9ec4e6772083ae6da5183bc702e 11 | 12 | COCOAPODS: 1.4.0 13 | -------------------------------------------------------------------------------- /Folder/SimuLooker/Pods/Manifest.lock: -------------------------------------------------------------------------------- 1 | PODS: 2 | - SwiftyJSON (4.0.0) 3 | 4 | DEPENDENCIES: 5 | - SwiftyJSON 6 | 7 | SPEC CHECKSUMS: 8 | SwiftyJSON: 070dabdcb1beb81b247c65ffa3a79dbbfb3b48aa 9 | 10 | PODFILE CHECKSUM: e2efbd54d3deb9d51f123dcc904521509ccbe882 11 | 12 | COCOAPODS: 1.4.0.rc.1 13 | -------------------------------------------------------------------------------- /Folder/SimulatorFinder/Pods/Manifest.lock: -------------------------------------------------------------------------------- 1 | PODS: 2 | - SwiftyJSON (4.0.0) 3 | 4 | DEPENDENCIES: 5 | - SwiftyJSON 6 | 7 | SPEC CHECKSUMS: 8 | SwiftyJSON: 070dabdcb1beb81b247c65ffa3a79dbbfb3b48aa 9 | 10 | PODFILE CHECKSUM: 0b2fe21fdbcde9ec4e6772083ae6da5183bc702e 11 | 12 | COCOAPODS: 1.4.0 13 | -------------------------------------------------------------------------------- /Folder/SimuLooker/SimuLooker/SimuLooker.entitlements: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | com.apple.security.app-sandbox 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /Folder/SimuLooker/Pods/Target Support Files/SwiftyJSON/SwiftyJSON-prefix.pch: -------------------------------------------------------------------------------- 1 | #ifdef __OBJC__ 2 | #import 3 | #else 4 | #ifndef FOUNDATION_EXPORT 5 | #if defined(__cplusplus) 6 | #define FOUNDATION_EXPORT extern "C" 7 | #else 8 | #define FOUNDATION_EXPORT extern 9 | #endif 10 | #endif 11 | #endif 12 | 13 | -------------------------------------------------------------------------------- /Folder/SimulatorFinder/Pods/Target Support Files/SwiftyJSON/SwiftyJSON-prefix.pch: -------------------------------------------------------------------------------- 1 | #ifdef __OBJC__ 2 | #import 3 | #else 4 | #ifndef FOUNDATION_EXPORT 5 | #if defined(__cplusplus) 6 | #define FOUNDATION_EXPORT extern "C" 7 | #else 8 | #define FOUNDATION_EXPORT extern 9 | #endif 10 | #endif 11 | #endif 12 | 13 | -------------------------------------------------------------------------------- /Folder/FinderToolDemo/FinderToolDemo/ViewController.h: -------------------------------------------------------------------------------- 1 | // 2 | // ViewController.h 3 | // FinderToolDemo 4 | // 5 | // Created by Alexcai on 2019/3/15. 6 | // Copyright © 2019 dongjiu. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface ViewController : NSViewController 12 | 13 | 14 | @end 15 | 16 | -------------------------------------------------------------------------------- /Folder/FinderToolDemo/FinderToolDemo/main.m: -------------------------------------------------------------------------------- 1 | // 2 | // main.m 3 | // FinderToolDemo 4 | // 5 | // Created by Alexcai on 2019/3/15. 6 | // Copyright © 2019 dongjiu. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | int main(int argc, const char * argv[]) { 12 | return NSApplicationMain(argc, argv); 13 | } 14 | -------------------------------------------------------------------------------- /Folder/SimuLooker/SimuLooker.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /Folder/SimuLooker/SimuLooker.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | IDEDidComputeMac32BitWarning 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /Folder/FinderToolDemo/FinderToolDemo/AppDelegate.h: -------------------------------------------------------------------------------- 1 | // 2 | // AppDelegate.h 3 | // FinderToolDemo 4 | // 5 | // Created by Alexcai on 2019/3/15. 6 | // Copyright © 2019 dongjiu. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface AppDelegate : NSObject 12 | 13 | 14 | @end 15 | 16 | -------------------------------------------------------------------------------- /Folder/SimuLooker/Podfile: -------------------------------------------------------------------------------- 1 | # Uncomment the next line to define a global platform for your project 2 | platform :osx, '10.11' 3 | 4 | target 'SimuLooker' do 5 | # Comment the next line if you're not using Swift and don't want to use dynamic frameworks 6 | use_frameworks! 7 | 8 | # Pods for SimuLooker 9 | pod 'SwiftyJSON' 10 | 11 | end 12 | -------------------------------------------------------------------------------- /Folder/SimulatorFinder/SimulatorFinder.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /Folder/SimulatorFinder/SimulatorFinder/Model/OS.swift: -------------------------------------------------------------------------------- 1 | // 2 | // OS.swift 3 | // SimulatorFinder 4 | // 5 | // Created by Alexcai on 2018/2/28. 6 | // Copyright © 2018年 Alexcai. All rights reserved. 7 | // 8 | 9 | import Foundation 10 | 11 | 12 | enum OS { 13 | case tvOs 14 | case watchOs 15 | case iOS 16 | case unknow 17 | } 18 | -------------------------------------------------------------------------------- /Folder/SwiftQQ/SwiftQQ.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | IDEDidComputeMac32BitWarning 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /Folder/FinderToolDemo/FinderExtensionDemo/FinderSync.h: -------------------------------------------------------------------------------- 1 | // 2 | // FinderSync.h 3 | // FinderExtensionDemo 4 | // 5 | // Created by Alexcai on 2019/3/15. 6 | // Copyright © 2019 dongjiu. All rights reserved. 7 | // 8 | 9 | #import 10 | #import 11 | 12 | @interface FinderSync : FIFinderSync 13 | 14 | @end 15 | -------------------------------------------------------------------------------- /Folder/FinderToolDemo/FinderToolDemo.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | IDEDidComputeMac32BitWarning 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /Folder/SimulatorFinder/Podfile: -------------------------------------------------------------------------------- 1 | # Uncomment the next line to define a global platform for your project 2 | platform :osx, '10.12' 3 | 4 | target 'SimulatorFinder' do 5 | # Comment the next line if you're not using Swift and don't want to use dynamic frameworks 6 | use_frameworks! 7 | 8 | # Pods for SimulatorFinder 9 | 10 | pod 'SwiftyJSON' 11 | end 12 | -------------------------------------------------------------------------------- /Folder/SimuLooker/SimuLooker/Assets.xcassets/StatusItemIcon.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "mac", 5 | "scale" : "1x" 6 | }, 7 | { 8 | "idiom" : "mac", 9 | "filename" : "phone160 2-3.png", 10 | "scale" : "2x" 11 | } 12 | ], 13 | "info" : { 14 | "version" : 1, 15 | "author" : "xcode" 16 | } 17 | } -------------------------------------------------------------------------------- /Folder/SwiftQQ/SwiftQQ/SwiftQQ.entitlements: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | com.apple.security.app-sandbox 6 | 7 | com.apple.security.files.user-selected.read-only 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /Folder/LCImageView/LCImageView/LCImageView.entitlements: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | com.apple.security.app-sandbox 6 | 7 | com.apple.security.files.user-selected.read-only 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /Folder/FinderToolDemo/FinderToolDemo/FinderToolDemo.entitlements: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | com.apple.security.app-sandbox 6 | 7 | com.apple.security.files.user-selected.read-only 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /Folder/SimuLooker/SimuStartHelper/SimuStartHelper.entitlements: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | com.apple.security.app-sandbox 6 | 7 | com.apple.security.files.user-selected.read-only 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /Folder/FinderToolDemo/FinderExtensionDemo/FinderExtensionDemo.entitlements: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | com.apple.security.app-sandbox 6 | 7 | com.apple.security.files.user-selected.read-only 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /Folder/SimuLooker/Pods/Target Support Files/SwiftyJSON/SwiftyJSON-umbrella.h: -------------------------------------------------------------------------------- 1 | #ifdef __OBJC__ 2 | #import 3 | #else 4 | #ifndef FOUNDATION_EXPORT 5 | #if defined(__cplusplus) 6 | #define FOUNDATION_EXPORT extern "C" 7 | #else 8 | #define FOUNDATION_EXPORT extern 9 | #endif 10 | #endif 11 | #endif 12 | 13 | 14 | FOUNDATION_EXPORT double SwiftyJSONVersionNumber; 15 | FOUNDATION_EXPORT const unsigned char SwiftyJSONVersionString[]; 16 | 17 | -------------------------------------------------------------------------------- /Folder/SwiftQQ/SwiftQQ/Login/LoginWindow.swift: -------------------------------------------------------------------------------- 1 | // 2 | // LoginWindow.swift 3 | // SwiftQQ 4 | // 5 | // Created by Alexcai on 2018/2/16. 6 | // Copyright © 2018年 Alexcai. All rights reserved. 7 | // 8 | 9 | import Cocoa 10 | 11 | class LoginWindow: NSWindow { 12 | 13 | 14 | 15 | /* 重写这个方法: 让窗口默认支持为key Window 16 | 只有key window 才能响应键盘焦点事件,实现输入操作 */ 17 | override var canBecomeKey: Bool{ 18 | return true 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /Folder/SimulatorFinder/Pods/Target Support Files/SwiftyJSON/SwiftyJSON-umbrella.h: -------------------------------------------------------------------------------- 1 | #ifdef __OBJC__ 2 | #import 3 | #else 4 | #ifndef FOUNDATION_EXPORT 5 | #if defined(__cplusplus) 6 | #define FOUNDATION_EXPORT extern "C" 7 | #else 8 | #define FOUNDATION_EXPORT extern 9 | #endif 10 | #endif 11 | #endif 12 | 13 | 14 | FOUNDATION_EXPORT double SwiftyJSONVersionNumber; 15 | FOUNDATION_EXPORT const unsigned char SwiftyJSONVersionString[]; 16 | 17 | -------------------------------------------------------------------------------- /Folder/SwiftQQ/SwiftQQ/Assets.xcassets/Message/test.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "filename" : "test.jpg", 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 | } -------------------------------------------------------------------------------- /Folder/SwiftQQ/SwiftQQ/Assets.xcassets/Message/test1.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "filename" : "test1.jpg", 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 | } -------------------------------------------------------------------------------- /Folder/SimuLooker/SimuLooker/Assets.xcassets/simulooker.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x" 6 | }, 7 | { 8 | "idiom" : "universal", 9 | "filename" : "simulooker.png", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "scale" : "3x" 15 | } 16 | ], 17 | "info" : { 18 | "version" : 1, 19 | "author" : "xcode" 20 | } 21 | } -------------------------------------------------------------------------------- /Folder/SimulatorFinder/SimulatorFinder/Assets.xcassets/iphone.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "filename" : "iphone.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 | } -------------------------------------------------------------------------------- /Folder/SimuLooker/Pods/Target Support Files/Pods-SimuLooker/Pods-SimuLooker-umbrella.h: -------------------------------------------------------------------------------- 1 | #ifdef __OBJC__ 2 | #import 3 | #else 4 | #ifndef FOUNDATION_EXPORT 5 | #if defined(__cplusplus) 6 | #define FOUNDATION_EXPORT extern "C" 7 | #else 8 | #define FOUNDATION_EXPORT extern 9 | #endif 10 | #endif 11 | #endif 12 | 13 | 14 | FOUNDATION_EXPORT double Pods_SimuLookerVersionNumber; 15 | FOUNDATION_EXPORT const unsigned char Pods_SimuLookerVersionString[]; 16 | 17 | -------------------------------------------------------------------------------- /Folder/LCImageView/LCImageView/Assets.xcassets/loginIcon.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "filename" : "WX20170419-165655.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 | } -------------------------------------------------------------------------------- /Folder/SimulatorFinder/SimulatorFinder/Assets.xcassets/statusIcon.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "filename" : "statusIcon.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 | } -------------------------------------------------------------------------------- /Folder/SimulatorFinder/SimulatorFinder/Assets.xcassets/iphone-narmal.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "filename" : "iphone-narmal.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 | } -------------------------------------------------------------------------------- /Folder/SimulatorFinder/Pods/Target Support Files/Pods-SimulatorFinder/Pods-SimulatorFinder-umbrella.h: -------------------------------------------------------------------------------- 1 | #ifdef __OBJC__ 2 | #import 3 | #else 4 | #ifndef FOUNDATION_EXPORT 5 | #if defined(__cplusplus) 6 | #define FOUNDATION_EXPORT extern "C" 7 | #else 8 | #define FOUNDATION_EXPORT extern 9 | #endif 10 | #endif 11 | #endif 12 | 13 | 14 | FOUNDATION_EXPORT double Pods_SimulatorFinderVersionNumber; 15 | FOUNDATION_EXPORT const unsigned char Pods_SimulatorFinderVersionString[]; 16 | 17 | -------------------------------------------------------------------------------- /Folder/SimuLooker/SimuLooker/Assets.xcassets/iPhone.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "filename" : "iPhone.png", 6 | "scale" : "1x" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "filename" : "iPhone@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 | } -------------------------------------------------------------------------------- /Folder/SwiftQQ/SwiftQQ/Assets.xcassets/Login/bg-back.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "filename" : "bg-back.png", 6 | "scale" : "1x" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "filename" : "bg-back@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 | } -------------------------------------------------------------------------------- /Folder/SwiftQQ/SwiftQQ/Assets.xcassets/Login/circle-big.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "filename" : "circle-big.png", 6 | "scale" : "1x" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "filename" : "circle-big@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 | } -------------------------------------------------------------------------------- /Folder/SwiftQQ/SwiftQQ/Assets.xcassets/Login/code_hover.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "filename" : "code_hover.png", 6 | "scale" : "1x" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "filename" : "code_hover@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 | } -------------------------------------------------------------------------------- /Folder/SwiftQQ/SwiftQQ/Assets.xcassets/Login/code_normal.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "filename" : "code_normal.png", 6 | "scale" : "1x" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "filename" : "code_normal@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 | } -------------------------------------------------------------------------------- /Folder/SwiftQQ/SwiftQQ/Assets.xcassets/Login/head-normal.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "filename" : "head-normal.png", 6 | "scale" : "1x" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "filename" : "head-normal@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 | } -------------------------------------------------------------------------------- /Folder/SwiftQQ/SwiftQQ/Assets.xcassets/Login/input-bottom.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "filename" : "input-bottom.png", 6 | "scale" : "1x" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "filename" : "input-bottom@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 | } -------------------------------------------------------------------------------- /Folder/SwiftQQ/SwiftQQ/Assets.xcassets/Home/menu-more-down.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "filename" : "menu-more-down.png", 6 | "scale" : "1x" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "filename" : "menu-more-down@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 | } -------------------------------------------------------------------------------- /Folder/SwiftQQ/SwiftQQ/Assets.xcassets/Login/loading-circle.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "filename" : "loading-circle.png", 6 | "scale" : "1x" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "filename" : "loading-circle@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 | } -------------------------------------------------------------------------------- /Folder/SwiftQQ/SwiftQQ/Assets.xcassets/Home/menu-more-normal.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "filename" : "menu-more-normal.png", 6 | "scale" : "1x" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "filename" : "menu-more-normal@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 | } -------------------------------------------------------------------------------- /Folder/SwiftQQ/SwiftQQ/Assets.xcassets/Login/Icon-Arrow-down.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "filename" : "Icon-Arrow-down.png", 6 | "scale" : "1x" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "filename" : "Icon-Arrow-down@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 | } -------------------------------------------------------------------------------- /Folder/SwiftQQ/SwiftQQ/Assets.xcassets/Login/icon-enter-down.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "filename" : "icon-enter-down.png", 6 | "scale" : "1x" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "filename" : "icon-enter-down@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 | } -------------------------------------------------------------------------------- /Folder/SwiftQQ/SwiftQQ/Assets.xcassets/Login/icon-enter-undo.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "filename" : "icon-enter-undo.png", 6 | "scale" : "1x" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "filename" : "icon-enter-undo@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 | } -------------------------------------------------------------------------------- /Folder/SwiftQQ/SwiftQQ/Assets.xcassets/Home/menu-contact-down.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "filename" : "menu-contact-down.png", 6 | "scale" : "1x" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "filename" : "menu-contact-down@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 | } -------------------------------------------------------------------------------- /Folder/SwiftQQ/SwiftQQ/Assets.xcassets/Home/menu-message-down.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "filename" : "menu-message-down.png", 6 | "scale" : "1x" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "filename" : "menu-message-down@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 | } -------------------------------------------------------------------------------- /Folder/SwiftQQ/SwiftQQ/Assets.xcassets/Login/Icon-Arrow-hover.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "filename" : "Icon-Arrow-hover.png", 6 | "scale" : "1x" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "filename" : "Icon-Arrow-hover@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 | } -------------------------------------------------------------------------------- /Folder/SwiftQQ/SwiftQQ/Assets.xcassets/Login/Icon-Arrow-normal.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "filename" : "Icon-Arrow-normal.png", 6 | "scale" : "1x" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "filename" : "Icon-Arrow-normal@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 | } -------------------------------------------------------------------------------- /Folder/SwiftQQ/SwiftQQ/Assets.xcassets/Login/Icon-choose-hover.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "filename" : "Icon-choose-hover.png", 6 | "scale" : "1x" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "filename" : "Icon-choose-hover@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 | } -------------------------------------------------------------------------------- /Folder/SwiftQQ/SwiftQQ/Assets.xcassets/Login/icon-close-normal.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "filename" : "icon-close-normal.png", 6 | "scale" : "1x" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "filename" : "icon-close-normal@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 | } -------------------------------------------------------------------------------- /Folder/SwiftQQ/SwiftQQ/Assets.xcassets/Login/icon-enter-hover.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "filename" : "icon-enter-hover.png", 6 | "scale" : "1x" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "filename" : "icon-enter-hover@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 | } -------------------------------------------------------------------------------- /Folder/SwiftQQ/SwiftQQ/Assets.xcassets/Login/icon-enter-normal.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "filename" : "icon-enter-normal.png", 6 | "scale" : "1x" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "filename" : "icon-enter-normal@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 | } -------------------------------------------------------------------------------- /Folder/SwiftQQ/SwiftQQ/Assets.xcassets/Home/menu-contact-normal.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "filename" : "menu-contact-normal.png", 6 | "scale" : "1x" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "filename" : "menu-contact-normal@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 | } -------------------------------------------------------------------------------- /Folder/SwiftQQ/SwiftQQ/Assets.xcassets/Home/menu-message-normal.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "filename" : "menu-message-normal.png", 6 | "scale" : "1x" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "filename" : "menu-message-normal@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 | } -------------------------------------------------------------------------------- /Folder/SwiftQQ/SwiftQQ/Assets.xcassets/Login/cell_checkbox_hover.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "filename" : "cell_checkbox_hover.png", 6 | "scale" : "1x" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "filename" : "cell_checkbox_hover@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 | } -------------------------------------------------------------------------------- /Folder/SwiftQQ/SwiftQQ/Assets.xcassets/ToolBar/toolbar_files_down.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "filename" : "toolbar_files_down.png", 6 | "scale" : "1x" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "filename" : "toolbar_files_down@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 | } -------------------------------------------------------------------------------- /Folder/SwiftQQ/SwiftQQ/Assets.xcassets/ToolBar/toolbar_phone_down.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "filename" : "toolbar_phone_down.png", 6 | "scale" : "1x" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "filename" : "toolbar_phone_down@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 | } -------------------------------------------------------------------------------- /Folder/SwiftQQ/SwiftQQ/Assets.xcassets/ToolBar/toolbar_shake_down.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "filename" : "toolbar_shake_down.png", 6 | "scale" : "1x" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "filename" : "toolbar_shake_down@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 | } -------------------------------------------------------------------------------- /Folder/SwiftQQ/SwiftQQ/Assets.xcassets/Login/cell_checkbox_normal.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "filename" : "cell_checkbox_normal.png", 6 | "scale" : "1x" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "filename" : "cell_checkbox_normal@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 | } -------------------------------------------------------------------------------- /Folder/SwiftQQ/SwiftQQ/Assets.xcassets/ToolBar/toolbar_files_hover.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "filename" : "toolbar_files_hover.png", 6 | "scale" : "1x" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "filename" : "toolbar_files_hover@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 | } -------------------------------------------------------------------------------- /Folder/SwiftQQ/SwiftQQ/Assets.xcassets/ToolBar/toolbar_files_normal.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "filename" : "toolbar_files_normal.png", 6 | "scale" : "1x" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "filename" : "toolbar_files_normal@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 | } -------------------------------------------------------------------------------- /Folder/SwiftQQ/SwiftQQ/Assets.xcassets/ToolBar/toolbar_history_down.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "filename" : "toolbar_history_down.png", 6 | "scale" : "1x" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "filename" : "toolbar_history_down@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 | } -------------------------------------------------------------------------------- /Folder/SwiftQQ/SwiftQQ/Assets.xcassets/ToolBar/toolbar_phone_hover.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "filename" : "toolbar_phone_hover.png", 6 | "scale" : "1x" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "filename" : "toolbar_phone_hover@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 | } -------------------------------------------------------------------------------- /Folder/SwiftQQ/SwiftQQ/Assets.xcassets/ToolBar/toolbar_phone_normal.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "filename" : "toolbar_phone_normal.png", 6 | "scale" : "1x" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "filename" : "toolbar_phone_normal@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 | } -------------------------------------------------------------------------------- /Folder/SwiftQQ/SwiftQQ/Assets.xcassets/ToolBar/toolbar_shake_hover.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "filename" : "toolbar_shake_hover.png", 6 | "scale" : "1x" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "filename" : "toolbar_shake_hover@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 | } -------------------------------------------------------------------------------- /Folder/SwiftQQ/SwiftQQ/Assets.xcassets/ToolBar/toolbar_shake_normal.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "filename" : "toolbar_shake_normal.png", 6 | "scale" : "1x" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "filename" : "toolbar_shake_normal@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 | } -------------------------------------------------------------------------------- /Folder/SwiftQQ/SwiftQQ/Assets.xcassets/Login/cell_checkbox_checked.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "filename" : "cell_checkbox_checked.png", 6 | "scale" : "1x" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "filename" : "cell_checkbox_checked@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 | } -------------------------------------------------------------------------------- /Folder/SwiftQQ/SwiftQQ/Assets.xcassets/ToolBar/toolbar_emoticon_down.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "filename" : "toolbar_emoticon_down.png", 6 | "scale" : "1x" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "filename" : "toolbar_emoticon_down@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 | } -------------------------------------------------------------------------------- /Folder/SwiftQQ/SwiftQQ/Assets.xcassets/ToolBar/toolbar_history_hover.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "filename" : "toolbar_history_hover.png", 6 | "scale" : "1x" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "filename" : "toolbar_history_hover@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 | } -------------------------------------------------------------------------------- /Folder/SwiftQQ/SwiftQQ/Assets.xcassets/ToolBar/toolbar_emoticon_hover.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "filename" : "toolbar_emoticon_hover.png", 6 | "scale" : "1x" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "filename" : "toolbar_emoticon_hover@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 | } -------------------------------------------------------------------------------- /Folder/SwiftQQ/SwiftQQ/Assets.xcassets/ToolBar/toolbar_emoticon_normal.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "filename" : "toolbar_emoticon_normal.png", 6 | "scale" : "1x" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "filename" : "toolbar_emoticon_normal@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 | } -------------------------------------------------------------------------------- /Folder/SwiftQQ/SwiftQQ/Assets.xcassets/ToolBar/toolbar_history_normal.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "filename" : "toolbar_history_normal.png", 6 | "scale" : "1x" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "filename" : "toolbar_history_normal@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 | } -------------------------------------------------------------------------------- /Folder/SwiftQQ/SwiftQQ/Assets.xcassets/ToolBar/toolbar_screenCapture_down.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "filename" : "toolbar_screenCapture_down.png", 6 | "scale" : "1x" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "filename" : "toolbar_screenCapture_down@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 | } -------------------------------------------------------------------------------- /Folder/SwiftQQ/SwiftQQ/Assets.xcassets/ToolBar/toolbar_screenCapture_hover.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "filename" : "toolbar_screenCapture_hover.png", 6 | "scale" : "1x" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "filename" : "toolbar_screenCapture_hover@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 | } -------------------------------------------------------------------------------- /Folder/SwiftQQ/SwiftQQ/Assets.xcassets/ToolBar/toolbar_screenCapture_normal.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "filename" : "toolbar_screenCapture_normal.png", 6 | "scale" : "1x" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "filename" : "toolbar_screenCapture_normal@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 | } -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | ## macOStudy 2 | ![](https://img.shields.io/badge/platform-MacOSX-red.svg) 3 | ![](https://img.shields.io/badge/Language-swift4.0-orange.svg) 4 | 5 | ![](https://ws2.sinaimg.cn/large/006tKfTcgy1fjgpx1smpmj311h0ibahf.jpg) 6 | MacOS 进阶项目课程计划 7 | 8 | * 项目实战开发(仿Mac版QQ) 9 | * 登录界面 10 | * NSWindow 深入 11 | * App主界面 12 | 13 | 14 | 15 | * 项目组件化实战 (技术要点) 16 | * cocoapods 本地仓库 17 | * cocoapods 远程仓库 18 | * podspec 文件配置 19 | * 发布Module 20 | * cocoapods 常用命令 21 | 22 | * 自己动手开发一款App (查看Xcode 模拟器应用) 23 | * 系统状态栏 24 | * Dock 栏 25 | * NSTask 26 | 27 | -------------------------------------------------------------------------------- /Folder/SimulatorFinder/SimulatorFinder/Preference/TestViewConotroller.swift: -------------------------------------------------------------------------------- 1 | // 2 | // TestViewConotroller.swift 3 | // SimulatorFinder 4 | // 5 | // Created by Alexcai on 2018/3/3. 6 | // Copyright © 2018年 Alexcai. All rights reserved. 7 | // 8 | 9 | import Cocoa 10 | 11 | class TestViewConotroller: NSViewController { 12 | 13 | override func viewDidLoad() { 14 | super.viewDidLoad() 15 | // Do view setup here. 16 | preferredContentSize = view.frame.size 17 | view.layer?.backgroundColor = NSColor.red.cgColor 18 | } 19 | 20 | } 21 | -------------------------------------------------------------------------------- /Folder/SwiftQQ/SwiftQQ/Assets.xcassets/Login/LoginWindow_BigDefaultHeadImage.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "filename" : "LoginWindow_BigDefaultHeadImage.png", 6 | "scale" : "1x" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "filename" : "LoginWindow_BigDefaultHeadImage@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 | } -------------------------------------------------------------------------------- /Folder/SwiftQQ/SwiftQQ/Login/BackgroundImageView.swift: -------------------------------------------------------------------------------- 1 | // 2 | // BackgroundImageView.swift 3 | // SwiftQQ 4 | // 5 | // Created by Alexcai on 2018/2/16. 6 | // Copyright © 2018年 Alexcai. All rights reserved. 7 | // 8 | 9 | import Cocoa 10 | 11 | class BackgroundImageView: NSImageView { 12 | 13 | override func draw(_ dirtyRect: NSRect) { 14 | super.draw(dirtyRect) 15 | 16 | // Drawing code here. 17 | } 18 | 19 | // 1 . 重写方法,支持鼠标移动窗口 20 | override var mouseDownCanMoveWindow: Bool{ 21 | return true 22 | } 23 | 24 | } 25 | -------------------------------------------------------------------------------- /Folder/SimulatorFinder/SimulatorFinder/Preference/AdvanceViewCotroller.swift: -------------------------------------------------------------------------------- 1 | // 2 | // AdvanceViewCotroller.swift 3 | // SimulatorFinder 4 | // 5 | // Created by Alexcai on 2018/3/3. 6 | // Copyright © 2018年 Alexcai. All rights reserved. 7 | // 8 | 9 | import Cocoa 10 | 11 | class AdvanceViewCotroller: NSViewController { 12 | 13 | override func viewDidLoad() { 14 | super.viewDidLoad() 15 | // Do view setup here. 16 | view.layer?.backgroundColor = NSColor.lightGray.cgColor 17 | preferredContentSize = view.frame.size 18 | } 19 | 20 | } 21 | -------------------------------------------------------------------------------- /Folder/SwiftQQ/SwiftQQ/Login/LoginWindowController.swift: -------------------------------------------------------------------------------- 1 | // 2 | // LoginWindowController.swift 3 | // SwiftQQ 4 | // 5 | // Created by Alexcai on 2018/2/16. 6 | // Copyright © 2018年 Alexcai. All rights reserved. 7 | // 8 | 9 | import Cocoa 10 | 11 | class LoginWindowController: NSWindowController { 12 | 13 | override func windowDidLoad() { 14 | super.windowDidLoad() 15 | // 1. 设置点击内容视图时可移动窗口 16 | window?.isMovableByWindowBackground = true 17 | 18 | // 2 .设置窗口背景色为透明 19 | window?.backgroundColor = NSColor.clear 20 | } 21 | 22 | } 23 | -------------------------------------------------------------------------------- /Folder/Apple Event.md: -------------------------------------------------------------------------------- 1 | ## Apple Event 2 | * Application Event Manager 3 | * Get a URL Handle 4 | 5 | > 通过URL触发的Application 事件 6 | 7 | * Apple Events Sent by the Mac OS 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | ##### 参考资料 24 | * [Apple 文档](https://developer.apple.com/library/content/documentation/Cocoa/Conceptual/ScriptableCocoaApplications/SApps_handle_AEs/SAppsHandleAEs.html#//apple_ref/doc/uid/20001239-1117769) 25 | 26 | * [Apple Event Manager](https://developer.apple.com/documentation/applicationservices/apple_event_manager) -------------------------------------------------------------------------------- /Folder/LCImageView/fastlane/Fastfile: -------------------------------------------------------------------------------- 1 | # This file contains the fastlane.tools configuration 2 | # You can find the documentation at https://docs.fastlane.tools 3 | # 4 | # For a list of all available actions, check out 5 | # 6 | # https://docs.fastlane.tools/actions 7 | # 8 | 9 | # Uncomment the line if you want fastlane to automatically update itself 10 | # update_fastlane 11 | 12 | default_platform(:ios) 13 | 14 | platform :ios do 15 | desc "Description of what the lane does" 16 | lane :custom_lane do 17 | # add actions here: https://docs.fastlane.tools/actions 18 | end 19 | end 20 | -------------------------------------------------------------------------------- /Folder/SimuLooker/SimuLooker/PreferenceController/GeneralController.swift: -------------------------------------------------------------------------------- 1 | // 2 | // OneController.swift 3 | // SimuLooker 4 | // 5 | // Created by caijinzhu on 2018/2/28. 6 | // Copyright © 2018年 alexiuce.github.io. All rights reserved. 7 | // 8 | 9 | import Cocoa 10 | 11 | class GeneralController: NSViewController { 12 | 13 | 14 | override func viewDidLoad() { 15 | super.viewDidLoad() 16 | self.preferredContentSize = view.frame.size 17 | view.layer?.backgroundColor = NSColor.orange.cgColor 18 | // Do view setup here. 19 | } 20 | 21 | 22 | } 23 | -------------------------------------------------------------------------------- /Folder/SimulatorFinder/SimulatorFinder/Preference/GeneralViewController.swift: -------------------------------------------------------------------------------- 1 | // 2 | // GeneralViewController.swift 3 | // SimulatorFinder 4 | // 5 | // Created by Alexcai on 2018/3/3. 6 | // Copyright © 2018年 Alexcai. All rights reserved. 7 | // 8 | 9 | import Cocoa 10 | 11 | class GeneralViewController: NSViewController { 12 | 13 | override func viewDidLoad() { 14 | super.viewDidLoad() 15 | // Do view setup here. 16 | view.layer?.backgroundColor = NSColor.orange.cgColor 17 | 18 | preferredContentSize = view.frame.size 19 | } 20 | 21 | } 22 | -------------------------------------------------------------------------------- /Folder/SimuLooker/SimuLooker/AboutController/AboutWindowController.swift: -------------------------------------------------------------------------------- 1 | // 2 | // AboutWindowController.swift 3 | // SimuLooker 4 | // 5 | // Created by Alexcai on 2018/9/2. 6 | // Copyright © 2018年 alexiuce.github.io. All rights reserved. 7 | // 8 | 9 | import Cocoa 10 | 11 | class AboutWindowController: NSWindowController { 12 | 13 | override func windowDidLoad() { 14 | super.windowDidLoad() 15 | 16 | window?.standardWindowButton(.zoomButton)?.isHidden = true 17 | window?.standardWindowButton(.miniaturizeButton)?.isHidden = true 18 | 19 | } 20 | 21 | } 22 | -------------------------------------------------------------------------------- /Folder/SwiftQQ/SwiftQQ/Message/Models/MsgModel.swift: -------------------------------------------------------------------------------- 1 | // 2 | // MsgModel.swift 3 | // SwiftQQ 4 | // 5 | // Created by Alexcai on 2018/2/19. 6 | // Copyright © 2018年 Alexcai. All rights reserved. 7 | // 消息的数据模型 8 | 9 | import Cocoa 10 | 11 | 12 | class MsgModel: NSObject { 13 | var headName = "" // 头像 14 | var name = "" // 名称 15 | var text = "" // 消息内容 16 | 17 | init(headName: String, username: String, message: String) { 18 | super.init() 19 | self.headName = headName 20 | name = username 21 | text = message 22 | 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /Folder/SimuLooker/SimuLooker/PreferenceController/PreferenceWindowController.swift: -------------------------------------------------------------------------------- 1 | // 2 | // PreferenceWindowController.swift 3 | // SimuLooker 4 | // 5 | // Created by caijinzhu on 2018/3/1. 6 | // Copyright © 2018年 alexiuce.github.io. All rights reserved. 7 | // 8 | 9 | import Cocoa 10 | 11 | class PreferenceWindowController: NSWindowController { 12 | 13 | override func windowDidLoad() { 14 | super.windowDidLoad() 15 | 16 | window?.standardWindowButton(.zoomButton)?.isHidden = true 17 | 18 | window?.standardWindowButton(.miniaturizeButton)?.isHidden = true 19 | } 20 | 21 | } 22 | -------------------------------------------------------------------------------- /Folder/FinderToolDemo/FinderToolDemo/ViewController.m: -------------------------------------------------------------------------------- 1 | // 2 | // ViewController.m 3 | // FinderToolDemo 4 | // 5 | // Created by Alexcai on 2019/3/15. 6 | // Copyright © 2019 dongjiu. All rights reserved. 7 | // 8 | 9 | #import "ViewController.h" 10 | 11 | @implementation ViewController 12 | 13 | - (void)viewDidLoad { 14 | [super viewDidLoad]; 15 | 16 | // Do any additional setup after loading the view. 17 | } 18 | 19 | 20 | - (void)setRepresentedObject:(id)representedObject { 21 | [super setRepresentedObject:representedObject]; 22 | 23 | // Update the view, if already loaded. 24 | } 25 | 26 | 27 | @end 28 | -------------------------------------------------------------------------------- /Folder/FinderToolDemo/FinderToolDemo/AppDelegate.m: -------------------------------------------------------------------------------- 1 | // 2 | // AppDelegate.m 3 | // FinderToolDemo 4 | // 5 | // Created by Alexcai on 2019/3/15. 6 | // Copyright © 2019 dongjiu. All rights reserved. 7 | // 8 | 9 | #import "AppDelegate.h" 10 | 11 | @interface AppDelegate () 12 | 13 | @end 14 | 15 | @implementation AppDelegate 16 | 17 | - (void)applicationDidFinishLaunching:(NSNotification *)aNotification { 18 | // Insert code here to initialize your application 19 | } 20 | 21 | 22 | - (void)applicationWillTerminate:(NSNotification *)aNotification { 23 | // Insert code here to tear down your application 24 | } 25 | 26 | 27 | @end 28 | -------------------------------------------------------------------------------- /Folder/LCImageView/LCImageView/AppDelegate.swift: -------------------------------------------------------------------------------- 1 | // 2 | // AppDelegate.swift 3 | // LCImageView 4 | // 5 | // Created by caijinzhu on 2018/2/6. 6 | // Copyright © 2018年 alexiuce.github.io. All rights reserved. 7 | // 8 | 9 | import Cocoa 10 | 11 | @NSApplicationMain 12 | class AppDelegate: NSObject, NSApplicationDelegate { 13 | 14 | 15 | 16 | func applicationDidFinishLaunching(_ aNotification: Notification) { 17 | // Insert code here to initialize your application 18 | } 19 | 20 | func applicationWillTerminate(_ aNotification: Notification) { 21 | // Insert code here to tear down your application 22 | } 23 | 24 | 25 | } 26 | 27 | -------------------------------------------------------------------------------- /Folder/SimuLooker/Pods/Target Support Files/SwiftyJSON/SwiftyJSON.xcconfig: -------------------------------------------------------------------------------- 1 | CODE_SIGN_IDENTITY = 2 | CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/SwiftyJSON 3 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 4 | HEADER_SEARCH_PATHS = "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Public" 5 | OTHER_SWIFT_FLAGS = $(inherited) "-D" "COCOAPODS" 6 | PODS_BUILD_DIR = ${BUILD_DIR} 7 | PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) 8 | PODS_ROOT = ${SRCROOT} 9 | PODS_TARGET_SRCROOT = ${PODS_ROOT}/SwiftyJSON 10 | PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier} 11 | SKIP_INSTALL = YES 12 | -------------------------------------------------------------------------------- /Folder/SimulatorFinder/Pods/Target Support Files/SwiftyJSON/SwiftyJSON.xcconfig: -------------------------------------------------------------------------------- 1 | CODE_SIGN_IDENTITY = 2 | CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/SwiftyJSON 3 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 4 | HEADER_SEARCH_PATHS = "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Public" 5 | OTHER_SWIFT_FLAGS = $(inherited) "-D" "COCOAPODS" 6 | PODS_BUILD_DIR = ${BUILD_DIR} 7 | PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) 8 | PODS_ROOT = ${SRCROOT} 9 | PODS_TARGET_SRCROOT = ${PODS_ROOT}/SwiftyJSON 10 | PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier} 11 | SKIP_INSTALL = YES 12 | -------------------------------------------------------------------------------- /Folder/SimulatorFinder/SimulatorFinder/AppDelegate.swift: -------------------------------------------------------------------------------- 1 | // 2 | // AppDelegate.swift 3 | // SimulatorFinder 4 | // 5 | // Created by Alexcai on 2018/2/28. 6 | // Copyright © 2018年 Alexcai. All rights reserved. 7 | // 8 | 9 | import Cocoa 10 | 11 | 12 | 13 | @NSApplicationMain 14 | class AppDelegate: NSObject, NSApplicationDelegate { 15 | 16 | 17 | 18 | 19 | func applicationDidFinishLaunching(_ aNotification: Notification) { 20 | // Insert code here to initialize your application 21 | } 22 | 23 | func applicationWillTerminate(_ aNotification: Notification) { 24 | // Insert code here to tear down your application 25 | } 26 | 27 | } 28 | 29 | -------------------------------------------------------------------------------- /Folder/SwiftQQ/SwiftQQ/AppDelegate.swift: -------------------------------------------------------------------------------- 1 | // 2 | // AppDelegate.swift 3 | // SwiftQQ 4 | // 5 | // Created by Alexcai on 2018/2/16. 6 | // Copyright © 2018年 Alexcai. All rights reserved. 7 | // 8 | 9 | import Cocoa 10 | 11 | @NSApplicationMain 12 | class AppDelegate: NSObject, NSApplicationDelegate { 13 | 14 | var homeWindowController : NSWindowController? 15 | 16 | func applicationDidFinishLaunching(_ aNotification: Notification) { 17 | // Insert code here to initialize your application 18 | } 19 | 20 | func applicationWillTerminate(_ aNotification: Notification) { 21 | // Insert code here to tear down your application 22 | } 23 | 24 | 25 | 26 | 27 | } 28 | 29 | -------------------------------------------------------------------------------- /Folder/SwiftQQ/SwiftQQ/More/MoreViewController.swift: -------------------------------------------------------------------------------- 1 | // 2 | // MoreViewController.swift 3 | // SwiftQQ 4 | // 5 | // Created by Alexcai on 2018/2/18. 6 | // Copyright © 2018年 Alexcai. All rights reserved. 7 | // 8 | 9 | import Cocoa 10 | 11 | class MoreViewController: NSViewController { 12 | 13 | class func controller() -> MoreViewController{ 14 | let vc = NSStoryboard.init(name: NSStoryboard.Name.init(rawValue: "more"), bundle: nil).instantiateInitialController() as! MoreViewController 15 | return vc 16 | } 17 | override func viewDidLoad() { 18 | super.viewDidLoad() 19 | view.layer?.backgroundColor = NSColor.red.cgColor 20 | // Do view setup here. 21 | } 22 | 23 | } 24 | -------------------------------------------------------------------------------- /Folder/SimuLooker/SimuLooker/AppDelegate.swift: -------------------------------------------------------------------------------- 1 | // 2 | // AppDelegate.swift 3 | // SimuLooker 4 | // 5 | // Created by caijinzhu on 2018/2/26. 6 | // Copyright © 2018年 alexiuce.github.io. All rights reserved. 7 | // 8 | 9 | import Cocoa 10 | 11 | @NSApplicationMain 12 | class AppDelegate: NSObject, NSApplicationDelegate { 13 | 14 | @IBOutlet weak var window: NSWindow! 15 | 16 | 17 | func applicationDidFinishLaunching(_ aNotification: Notification) { 18 | // Insert code here to initialize your application 19 | 20 | 21 | 22 | } 23 | 24 | func applicationWillTerminate(_ aNotification: Notification) { 25 | // Insert code here to tear down your application 26 | } 27 | 28 | 29 | } 30 | 31 | -------------------------------------------------------------------------------- /Folder/SwiftQQ/SwiftQQ/Contact/ContactViewController.swift: -------------------------------------------------------------------------------- 1 | // 2 | // ContactViewController.swift 3 | // SwiftQQ 4 | // 5 | // Created by Alexcai on 2018/2/18. 6 | // Copyright © 2018年 Alexcai. All rights reserved. 7 | // 8 | 9 | import Cocoa 10 | 11 | class ContactViewController: NSViewController { 12 | 13 | class func controller() -> ContactViewController{ 14 | let vc = NSStoryboard.init(name: NSStoryboard.Name.init(rawValue: "contact"), bundle: nil).instantiateInitialController() as! ContactViewController 15 | return vc 16 | } 17 | override func viewDidLoad() { 18 | super.viewDidLoad() 19 | view.layer?.backgroundColor = NSColor.orange.cgColor 20 | // Do view setup here. 21 | } 22 | 23 | } 24 | -------------------------------------------------------------------------------- /Folder/SimuLooker/SimuLooker/ToolKit/ShellTask.swift: -------------------------------------------------------------------------------- 1 | // 2 | // ShellTask.swift 3 | // SimuLooker 4 | // 5 | // Created by caijinzhu on 2018/2/27. 6 | // Copyright © 2018年 alexiuce.github.io. All rights reserved. 7 | // 8 | 9 | import Cocoa 10 | 11 | struct ShellTask{ 12 | 13 | /* 执行cmd 指令 */ 14 | static func execCmd(cmd: String, arguments: [String]) -> String{ 15 | let task = Process() 16 | task.launchPath = cmd 17 | task.arguments = arguments 18 | let output = Pipe() 19 | task.standardOutput = output 20 | task.launch() 21 | task.waitUntilExit() 22 | let data = output.fileHandleForReading.readDataToEndOfFile() 23 | return String(data: data, encoding: String.Encoding.utf8) ?? "" 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /Folder/SimuLooker/SimuLooker/AboutController/AboutViewController.swift: -------------------------------------------------------------------------------- 1 | // 2 | // AboutViewController.swift 3 | // SimuLooker 4 | // 5 | // Created by Alexcai on 2018/9/2. 6 | // Copyright © 2018年 alexiuce.github.io. All rights reserved. 7 | // 8 | 9 | import Cocoa 10 | 11 | class AboutViewController: NSViewController { 12 | 13 | @IBOutlet weak var versionLabel: NSTextField! 14 | 15 | override func viewDidLoad() { 16 | super.viewDidLoad() 17 | // Do view setup here. 18 | 19 | guard let infoDict = Bundle.main.infoDictionary else { 20 | return; 21 | } 22 | 23 | let version = infoDict["CFBundleShortVersionString"] as! NSString 24 | versionLabel.stringValue = "Version \(version)" 25 | } 26 | 27 | } 28 | -------------------------------------------------------------------------------- /Folder/SimuLooker/Pods/Target Support Files/Pods-SimuLooker/Pods-SimuLooker.debug.xcconfig: -------------------------------------------------------------------------------- 1 | ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES 2 | CODE_SIGN_IDENTITY = 3 | FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/SwiftyJSON" 4 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 5 | LD_RUNPATH_SEARCH_PATHS = $(inherited) '@executable_path/../Frameworks' '@loader_path/Frameworks' 6 | OTHER_CFLAGS = $(inherited) -iquote "${PODS_CONFIGURATION_BUILD_DIR}/SwiftyJSON/SwiftyJSON.framework/Headers" 7 | OTHER_LDFLAGS = $(inherited) -framework "SwiftyJSON" 8 | OTHER_SWIFT_FLAGS = $(inherited) "-D" "COCOAPODS" 9 | PODS_BUILD_DIR = ${BUILD_DIR} 10 | PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) 11 | PODS_PODFILE_DIR_PATH = ${SRCROOT}/. 12 | PODS_ROOT = ${SRCROOT}/Pods 13 | -------------------------------------------------------------------------------- /Folder/SimuLooker/Pods/Target Support Files/Pods-SimuLooker/Pods-SimuLooker.release.xcconfig: -------------------------------------------------------------------------------- 1 | ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES 2 | CODE_SIGN_IDENTITY = 3 | FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/SwiftyJSON" 4 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 5 | LD_RUNPATH_SEARCH_PATHS = $(inherited) '@executable_path/../Frameworks' '@loader_path/Frameworks' 6 | OTHER_CFLAGS = $(inherited) -iquote "${PODS_CONFIGURATION_BUILD_DIR}/SwiftyJSON/SwiftyJSON.framework/Headers" 7 | OTHER_LDFLAGS = $(inherited) -framework "SwiftyJSON" 8 | OTHER_SWIFT_FLAGS = $(inherited) "-D" "COCOAPODS" 9 | PODS_BUILD_DIR = ${BUILD_DIR} 10 | PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) 11 | PODS_PODFILE_DIR_PATH = ${SRCROOT}/. 12 | PODS_ROOT = ${SRCROOT}/Pods 13 | -------------------------------------------------------------------------------- /Folder/SimulatorFinder/Pods/Target Support Files/Pods-SimulatorFinder/Pods-SimulatorFinder.debug.xcconfig: -------------------------------------------------------------------------------- 1 | ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES 2 | CODE_SIGN_IDENTITY = 3 | FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/SwiftyJSON" 4 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 5 | LD_RUNPATH_SEARCH_PATHS = $(inherited) '@executable_path/../Frameworks' '@loader_path/Frameworks' 6 | OTHER_CFLAGS = $(inherited) -iquote "${PODS_CONFIGURATION_BUILD_DIR}/SwiftyJSON/SwiftyJSON.framework/Headers" 7 | OTHER_LDFLAGS = $(inherited) -framework "SwiftyJSON" 8 | OTHER_SWIFT_FLAGS = $(inherited) "-D" "COCOAPODS" 9 | PODS_BUILD_DIR = ${BUILD_DIR} 10 | PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) 11 | PODS_PODFILE_DIR_PATH = ${SRCROOT}/. 12 | PODS_ROOT = ${SRCROOT}/Pods 13 | -------------------------------------------------------------------------------- /Folder/SimulatorFinder/Pods/Target Support Files/Pods-SimulatorFinder/Pods-SimulatorFinder.release.xcconfig: -------------------------------------------------------------------------------- 1 | ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES 2 | CODE_SIGN_IDENTITY = 3 | FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/SwiftyJSON" 4 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 5 | LD_RUNPATH_SEARCH_PATHS = $(inherited) '@executable_path/../Frameworks' '@loader_path/Frameworks' 6 | OTHER_CFLAGS = $(inherited) -iquote "${PODS_CONFIGURATION_BUILD_DIR}/SwiftyJSON/SwiftyJSON.framework/Headers" 7 | OTHER_LDFLAGS = $(inherited) -framework "SwiftyJSON" 8 | OTHER_SWIFT_FLAGS = $(inherited) "-D" "COCOAPODS" 9 | PODS_BUILD_DIR = ${BUILD_DIR} 10 | PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) 11 | PODS_PODFILE_DIR_PATH = ${SRCROOT}/. 12 | PODS_ROOT = ${SRCROOT}/Pods 13 | -------------------------------------------------------------------------------- /Folder/SwiftQQ/SwiftQQ/Login/HoverImageView.swift: -------------------------------------------------------------------------------- 1 | // 2 | // HoverImageView.swift 3 | // SwiftQQ 4 | // 5 | // Created by Alexcai on 2018/2/17. 6 | // Copyright © 2018年 Alexcai. All rights reserved. 7 | // 8 | 9 | import Cocoa 10 | 11 | class HoverImageView: NSImageView { 12 | 13 | override func awakeFromNib() { 14 | // 1 添加监听鼠标移入移出 15 | let trackArea = NSTrackingArea(rect: bounds, options: [.activeInActiveApp,.mouseEnteredAndExited], owner: self, userInfo: nil) 16 | addTrackingArea(trackArea) 17 | } 18 | // 2 .实现鼠标移入移出的方法 19 | override func mouseExited(with event: NSEvent) { 20 | image = NSImage(named: NSImage.Name(rawValue: "head-normal")) 21 | } 22 | 23 | override func mouseEntered(with event: NSEvent) { 24 | image = NSImage(named: NSImage.Name(rawValue: "circle-big")) 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /Folder/LCImageView/LCImageView/ViewController.swift: -------------------------------------------------------------------------------- 1 | // 2 | // ViewController.swift 3 | // LCImageView 4 | // 5 | // Created by caijinzhu on 2018/2/6. 6 | // Copyright © 2018年 alexiuce.github.io. All rights reserved. 7 | // 8 | 9 | import Cocoa 10 | 11 | class ViewController: NSViewController { 12 | 13 | override func viewDidLoad() { 14 | super.viewDidLoad() 15 | 16 | let headImage = NSImage(named: NSImage.Name(rawValue: "loginIcon"))! 17 | let headImageView = LCImageView(image: headImage) 18 | headImageView.frame = NSRect(x: 10, y: 20, width: 150, height: 150) 19 | 20 | view.addSubview(headImageView) 21 | // Do any additional setup after loading the view. 22 | } 23 | 24 | override var representedObject: Any? { 25 | didSet { 26 | // Update the view, if already loaded. 27 | } 28 | } 29 | 30 | 31 | } 32 | 33 | -------------------------------------------------------------------------------- /Folder/SwiftQQ/SwiftQQ/Message/Models/ChatDataModel.swift: -------------------------------------------------------------------------------- 1 | // 2 | // ChatDataModel.swift 3 | // SwiftQQ 4 | // 5 | // Created by Alexcai on 2018/2/19. 6 | // Copyright © 2018年 Alexcai. All rights reserved. 7 | // 8 | 9 | import Cocoa 10 | 11 | class ChatDataModel: NSObject { 12 | // 消息类型枚举 13 | enum ChatStyle { 14 | case me // 自己 15 | case other // 他人 16 | } 17 | 18 | // 1. 消息来源类型 19 | var chatType: ChatStyle = .me 20 | 21 | // 2. 消息的头像 22 | var headIcon = "" 23 | // 3. 用户名称 24 | var username = "" 25 | // 4. 消息的内容 26 | var text = "" 27 | 28 | 29 | init(headIcon: String, username: String, msgText: String, type: ChatStyle ){ 30 | super.init() 31 | self.headIcon = headIcon 32 | self.username = username 33 | self.text = msgText 34 | self.chatType = type 35 | } 36 | 37 | } 38 | -------------------------------------------------------------------------------- /Folder/SimuLooker/SimuLooker/Model/Devices.swift: -------------------------------------------------------------------------------- 1 | // 2 | // Devices.swift 3 | // SimuLooker 4 | // 5 | // Created by caijinzhu on 2018/2/27. 6 | // Copyright © 2018年 alexiuce.github.io. All rights reserved. 7 | // 8 | 9 | import Foundation 10 | 11 | import SwiftyJSON 12 | 13 | class Device { 14 | let name : String 15 | let udid : String 16 | let osInfo : String 17 | let isOpen : Bool 18 | let isAvailable : Bool 19 | 20 | 21 | let appArray: [SimuApplication] 22 | 23 | 24 | init(osInfo: String, json:JSON) { 25 | name = json["name"].stringValue 26 | udid = json["udid"].stringValue 27 | self.osInfo = osInfo 28 | isOpen = json["state"].stringValue.contains("Booted") 29 | isAvailable = json["availability"].stringValue.contains("(available)") 30 | appArray = SimuApplication.loadAllApplicationOnDevice(udid) 31 | 32 | } 33 | } 34 | 35 | -------------------------------------------------------------------------------- /Folder/SimuLooker/Pods/Target Support Files/SwiftyJSON/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 | FMWK 17 | CFBundleShortVersionString 18 | 4.0.0 19 | CFBundleSignature 20 | ???? 21 | CFBundleVersion 22 | ${CURRENT_PROJECT_VERSION} 23 | NSPrincipalClass 24 | 25 | 26 | 27 | -------------------------------------------------------------------------------- /Folder/SimuLooker/Pods/Target Support Files/Pods-SimuLooker/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 | FMWK 17 | CFBundleShortVersionString 18 | 1.0.0 19 | CFBundleSignature 20 | ???? 21 | CFBundleVersion 22 | ${CURRENT_PROJECT_VERSION} 23 | NSPrincipalClass 24 | 25 | 26 | 27 | -------------------------------------------------------------------------------- /Folder/SimulatorFinder/Pods/Target Support Files/SwiftyJSON/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 | FMWK 17 | CFBundleShortVersionString 18 | 4.0.0 19 | CFBundleSignature 20 | ???? 21 | CFBundleVersion 22 | ${CURRENT_PROJECT_VERSION} 23 | NSPrincipalClass 24 | 25 | 26 | 27 | -------------------------------------------------------------------------------- /Folder/SimulatorFinder/Pods/Target Support Files/Pods-SimulatorFinder/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 | FMWK 17 | CFBundleShortVersionString 18 | 1.0.0 19 | CFBundleSignature 20 | ???? 21 | CFBundleVersion 22 | ${CURRENT_PROJECT_VERSION} 23 | NSPrincipalClass 24 | 25 | 26 | 27 | -------------------------------------------------------------------------------- /Folder/SimuLooker/SimuLooker/ToolKit/ActionTrampline.swift: -------------------------------------------------------------------------------- 1 | // 2 | // ActionTrampline.swift 3 | // SimuLooker 4 | // 5 | // Created by caijinzhu on 2018/2/26. 6 | // Copyright © 2018年 alexiuce.github.io. All rights reserved. 7 | // 8 | 9 | import Foundation 10 | import Cocoa 11 | 12 | 13 | 14 | let NSControlActionFunctionAssociatedObjectKey = UnsafeMutablePointer.allocate(capacity: 1) 15 | 16 | 17 | 18 | class ActiontTrampoline: NSObject { 19 | var action: (NSControl) -> Void 20 | init(action: @escaping(NSControl) -> Void) { 21 | self.action = action 22 | } 23 | 24 | @objc func action(sender: NSControl){ 25 | action(sender) 26 | } 27 | } 28 | 29 | extension NSControl{ 30 | @nonobjc func setAction(action: @escaping (NSControl)->Void){ 31 | let trampoline = ActiontTrampoline(action: action) 32 | target = trampoline 33 | 34 | self.action = #selector(ActiontTrampoline.action(sender:)) 35 | objc_setAssociatedObject(self, NSControlActionFunctionAssociatedObjectKey, trampoline, .OBJC_ASSOCIATION_RETAIN) 36 | } 37 | } 38 | -------------------------------------------------------------------------------- /Folder/SimuLooker/SimuStartHelper/Base.lproj/MainMenu.xib: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | -------------------------------------------------------------------------------- /Folder/SimulatorFinder/SimulatorFinder/Shell/Shell.swift: -------------------------------------------------------------------------------- 1 | // 2 | // Shell.swift 3 | // SimulatorFinder 4 | // 5 | // Created by Alexcai on 2018/2/28. 6 | // Copyright © 2018年 Alexcai. All rights reserved. 7 | // 用来执行cmd 指令的模块 8 | 9 | import Cocoa 10 | 11 | 12 | struct Shell { 13 | /* 用于执行指令操作的封装 14 | * cmd : 需要执行的命令 15 | * arguments : 执行命令的参数 16 | * return : 命令执行后的结果字符串 17 | */ 18 | static func execmd(_ cmd: String, arguments:[String]) -> String { 19 | let task = Process() 20 | 21 | // 1. 设置命令的参数 22 | task.arguments = arguments 23 | // 2. 设置执行命令 24 | task.launchPath = cmd 25 | 26 | // 3. 设置命令执行后的接收管道 27 | let output = Pipe() 28 | task.standardOutput = output 29 | 30 | // 开始执行 31 | task.launch() 32 | // 等待直到执行结束 33 | task.waitUntilExit() 34 | // 在命令结束后,获取结果 35 | let data = output.fileHandleForReading.readDataToEndOfFile() 36 | 37 | let resut = String(data: data, encoding: String.Encoding.utf8) 38 | return resut ?? "" 39 | } 40 | 41 | } 42 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2017 Alexiuce 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /Folder/SimuLooker/Pods/SwiftyJSON/LICENSE: -------------------------------------------------------------------------------- 1 | The MIT License (MIT) 2 | 3 | Copyright (c) 2017 Ruoyu Fu 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in 13 | all copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 21 | THE SOFTWARE. 22 | -------------------------------------------------------------------------------- /Folder/SimulatorFinder/Pods/SwiftyJSON/LICENSE: -------------------------------------------------------------------------------- 1 | The MIT License (MIT) 2 | 3 | Copyright (c) 2017 Ruoyu Fu 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in 13 | all copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 21 | THE SOFTWARE. 22 | -------------------------------------------------------------------------------- /Folder/SwiftQQ/SwiftQQ/ThirdLibs/SnapKit/LICENSE: -------------------------------------------------------------------------------- 1 | Copyright (c) 2011-Present SnapKit Team - https://github.com/SnapKit 2 | 3 | Permission is hereby granted, free of charge, to any person obtaining a copy 4 | of this software and associated documentation files (the "Software"), to deal 5 | in the Software without restriction, including without limitation the rights 6 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 7 | copies of the Software, and to permit persons to whom the Software is 8 | furnished to do so, subject to the following conditions: 9 | 10 | The above copyright notice and this permission notice shall be included in 11 | all copies or substantial portions of the Software. 12 | 13 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 14 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 15 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 16 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 17 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 18 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 19 | THE SOFTWARE. 20 | -------------------------------------------------------------------------------- /Folder/SwiftQQ/SwiftQQ/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | $(DEVELOPMENT_LANGUAGE) 7 | CFBundleExecutable 8 | $(EXECUTABLE_NAME) 9 | CFBundleIconFile 10 | 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 | LSMinimumSystemVersion 24 | $(MACOSX_DEPLOYMENT_TARGET) 25 | NSHumanReadableCopyright 26 | Copyright © 2018年 Alexcai. All rights reserved. 27 | NSMainStoryboardFile 28 | Main 29 | NSPrincipalClass 30 | NSApplication 31 | 32 | 33 | -------------------------------------------------------------------------------- /Folder/FinderToolDemo/FinderToolDemo/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | $(DEVELOPMENT_LANGUAGE) 7 | CFBundleExecutable 8 | $(EXECUTABLE_NAME) 9 | CFBundleIconFile 10 | 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 | LSMinimumSystemVersion 24 | $(MACOSX_DEPLOYMENT_TARGET) 25 | NSHumanReadableCopyright 26 | Copyright © 2019 dongjiu. All rights reserved. 27 | NSMainStoryboardFile 28 | Main 29 | NSPrincipalClass 30 | NSApplication 31 | 32 | 33 | -------------------------------------------------------------------------------- /Folder/LCImageView/LCImageView/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | $(DEVELOPMENT_LANGUAGE) 7 | CFBundleExecutable 8 | $(EXECUTABLE_NAME) 9 | CFBundleIconFile 10 | 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 | LSMinimumSystemVersion 24 | $(MACOSX_DEPLOYMENT_TARGET) 25 | NSHumanReadableCopyright 26 | Copyright © 2018年 alexiuce.github.io. All rights reserved. 27 | NSMainStoryboardFile 28 | Main 29 | NSPrincipalClass 30 | NSApplication 31 | 32 | 33 | -------------------------------------------------------------------------------- /Folder/SwiftQQ/SwiftQQ/Assets.xcassets/AppIcon.appiconset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "mac", 5 | "size" : "16x16", 6 | "scale" : "1x" 7 | }, 8 | { 9 | "idiom" : "mac", 10 | "size" : "16x16", 11 | "scale" : "2x" 12 | }, 13 | { 14 | "idiom" : "mac", 15 | "size" : "32x32", 16 | "scale" : "1x" 17 | }, 18 | { 19 | "idiom" : "mac", 20 | "size" : "32x32", 21 | "scale" : "2x" 22 | }, 23 | { 24 | "idiom" : "mac", 25 | "size" : "128x128", 26 | "scale" : "1x" 27 | }, 28 | { 29 | "idiom" : "mac", 30 | "size" : "128x128", 31 | "scale" : "2x" 32 | }, 33 | { 34 | "idiom" : "mac", 35 | "size" : "256x256", 36 | "scale" : "1x" 37 | }, 38 | { 39 | "idiom" : "mac", 40 | "size" : "256x256", 41 | "scale" : "2x" 42 | }, 43 | { 44 | "idiom" : "mac", 45 | "size" : "512x512", 46 | "scale" : "1x" 47 | }, 48 | { 49 | "idiom" : "mac", 50 | "size" : "512x512", 51 | "scale" : "2x" 52 | } 53 | ], 54 | "info" : { 55 | "version" : 1, 56 | "author" : "xcode" 57 | } 58 | } -------------------------------------------------------------------------------- /Folder/LCImageView/LCImageView/Assets.xcassets/AppIcon.appiconset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "mac", 5 | "size" : "16x16", 6 | "scale" : "1x" 7 | }, 8 | { 9 | "idiom" : "mac", 10 | "size" : "16x16", 11 | "scale" : "2x" 12 | }, 13 | { 14 | "idiom" : "mac", 15 | "size" : "32x32", 16 | "scale" : "1x" 17 | }, 18 | { 19 | "idiom" : "mac", 20 | "size" : "32x32", 21 | "scale" : "2x" 22 | }, 23 | { 24 | "idiom" : "mac", 25 | "size" : "128x128", 26 | "scale" : "1x" 27 | }, 28 | { 29 | "idiom" : "mac", 30 | "size" : "128x128", 31 | "scale" : "2x" 32 | }, 33 | { 34 | "idiom" : "mac", 35 | "size" : "256x256", 36 | "scale" : "1x" 37 | }, 38 | { 39 | "idiom" : "mac", 40 | "size" : "256x256", 41 | "scale" : "2x" 42 | }, 43 | { 44 | "idiom" : "mac", 45 | "size" : "512x512", 46 | "scale" : "1x" 47 | }, 48 | { 49 | "idiom" : "mac", 50 | "size" : "512x512", 51 | "scale" : "2x" 52 | } 53 | ], 54 | "info" : { 55 | "version" : 1, 56 | "author" : "xcode" 57 | } 58 | } -------------------------------------------------------------------------------- /Folder/SimuLooker/SimuStartHelper/Assets.xcassets/AppIcon.appiconset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "mac", 5 | "size" : "16x16", 6 | "scale" : "1x" 7 | }, 8 | { 9 | "idiom" : "mac", 10 | "size" : "16x16", 11 | "scale" : "2x" 12 | }, 13 | { 14 | "idiom" : "mac", 15 | "size" : "32x32", 16 | "scale" : "1x" 17 | }, 18 | { 19 | "idiom" : "mac", 20 | "size" : "32x32", 21 | "scale" : "2x" 22 | }, 23 | { 24 | "idiom" : "mac", 25 | "size" : "128x128", 26 | "scale" : "1x" 27 | }, 28 | { 29 | "idiom" : "mac", 30 | "size" : "128x128", 31 | "scale" : "2x" 32 | }, 33 | { 34 | "idiom" : "mac", 35 | "size" : "256x256", 36 | "scale" : "1x" 37 | }, 38 | { 39 | "idiom" : "mac", 40 | "size" : "256x256", 41 | "scale" : "2x" 42 | }, 43 | { 44 | "idiom" : "mac", 45 | "size" : "512x512", 46 | "scale" : "1x" 47 | }, 48 | { 49 | "idiom" : "mac", 50 | "size" : "512x512", 51 | "scale" : "2x" 52 | } 53 | ], 54 | "info" : { 55 | "version" : 1, 56 | "author" : "xcode" 57 | } 58 | } -------------------------------------------------------------------------------- /Folder/FinderToolDemo/FinderToolDemo/Assets.xcassets/AppIcon.appiconset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "mac", 5 | "size" : "16x16", 6 | "scale" : "1x" 7 | }, 8 | { 9 | "idiom" : "mac", 10 | "size" : "16x16", 11 | "scale" : "2x" 12 | }, 13 | { 14 | "idiom" : "mac", 15 | "size" : "32x32", 16 | "scale" : "1x" 17 | }, 18 | { 19 | "idiom" : "mac", 20 | "size" : "32x32", 21 | "scale" : "2x" 22 | }, 23 | { 24 | "idiom" : "mac", 25 | "size" : "128x128", 26 | "scale" : "1x" 27 | }, 28 | { 29 | "idiom" : "mac", 30 | "size" : "128x128", 31 | "scale" : "2x" 32 | }, 33 | { 34 | "idiom" : "mac", 35 | "size" : "256x256", 36 | "scale" : "1x" 37 | }, 38 | { 39 | "idiom" : "mac", 40 | "size" : "256x256", 41 | "scale" : "2x" 42 | }, 43 | { 44 | "idiom" : "mac", 45 | "size" : "512x512", 46 | "scale" : "1x" 47 | }, 48 | { 49 | "idiom" : "mac", 50 | "size" : "512x512", 51 | "scale" : "2x" 52 | } 53 | ], 54 | "info" : { 55 | "version" : 1, 56 | "author" : "xcode" 57 | } 58 | } -------------------------------------------------------------------------------- /Folder/SimulatorFinder/SimulatorFinder/Assets.xcassets/AppIcon.appiconset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "mac", 5 | "size" : "16x16", 6 | "scale" : "1x" 7 | }, 8 | { 9 | "idiom" : "mac", 10 | "size" : "16x16", 11 | "scale" : "2x" 12 | }, 13 | { 14 | "idiom" : "mac", 15 | "size" : "32x32", 16 | "scale" : "1x" 17 | }, 18 | { 19 | "idiom" : "mac", 20 | "size" : "32x32", 21 | "scale" : "2x" 22 | }, 23 | { 24 | "idiom" : "mac", 25 | "size" : "128x128", 26 | "scale" : "1x" 27 | }, 28 | { 29 | "idiom" : "mac", 30 | "size" : "128x128", 31 | "scale" : "2x" 32 | }, 33 | { 34 | "idiom" : "mac", 35 | "size" : "256x256", 36 | "scale" : "1x" 37 | }, 38 | { 39 | "idiom" : "mac", 40 | "size" : "256x256", 41 | "scale" : "2x" 42 | }, 43 | { 44 | "idiom" : "mac", 45 | "size" : "512x512", 46 | "scale" : "1x" 47 | }, 48 | { 49 | "idiom" : "mac", 50 | "size" : "512x512", 51 | "scale" : "2x" 52 | } 53 | ], 54 | "info" : { 55 | "version" : 1, 56 | "author" : "xcode" 57 | } 58 | } -------------------------------------------------------------------------------- /Folder/SimuLooker/SimuLooker/Base.lproj/MainMenu.xib: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | -------------------------------------------------------------------------------- /Folder/SimulatorFinder/SimulatorFinder/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | $(DEVELOPMENT_LANGUAGE) 7 | CFBundleExecutable 8 | $(EXECUTABLE_NAME) 9 | CFBundleIconFile 10 | 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 | LSMinimumSystemVersion 24 | $(MACOSX_DEPLOYMENT_TARGET) 25 | NSHumanReadableCopyright 26 | Copyright © 2018年 Alexcai. All rights reserved. 27 | NSMainStoryboardFile 28 | Main 29 | NSPrincipalClass 30 | NSApplication 31 | LSUIElement 32 | 33 | 34 | 35 | -------------------------------------------------------------------------------- /Folder/SimulatorFinder/SimulatorFinder/Menu/AppMenuItem.swift: -------------------------------------------------------------------------------- 1 | // 2 | // AppMenuItem.swift 3 | // SimulatorFinder 4 | // 5 | // Created by Alexcai on 2018/3/3. 6 | // Copyright © 2018年 Alexcai. All rights reserved. 7 | // 8 | 9 | import Cocoa 10 | 11 | class AppMenuItem: NSMenuItem { 12 | 13 | 14 | override var representedObject: Any?{ 15 | didSet{ 16 | guard let obj = representedObject as? App else { return } 17 | guard let appView = view as? AppItemView else { return } 18 | appView.appID.stringValue = obj.bid 19 | appView.appName.stringValue = obj.name 20 | appView.appIcon.image = obj.icon 21 | appView.appData = obj 22 | } 23 | } 24 | 25 | override init(title string: String, action selector: Selector?, keyEquivalent charCode: String) { 26 | super.init(title: string, action: selector, keyEquivalent: charCode) 27 | setupUI() 28 | } 29 | 30 | required init(coder decoder: NSCoder) { 31 | super.init(coder: decoder) 32 | } 33 | 34 | 35 | 36 | fileprivate func setupUI(){ 37 | let appView = AppItemView(frame: NSMakeRect(0, 0, 289, 83)) 38 | appView.appName.stringValue = title 39 | view = appView 40 | 41 | } 42 | } 43 | -------------------------------------------------------------------------------- /Folder/SwiftQQ/SwiftQQ/Message/View/SubSplitDelegate.swift: -------------------------------------------------------------------------------- 1 | // 2 | // SubSplitDelegate.swift 3 | // SwiftQQ 4 | // 5 | // Created by Alexcai on 2018/2/19. 6 | // Copyright © 2018年 Alexcai. All rights reserved. 7 | // 8 | 9 | import Cocoa 10 | 11 | class SubSplitDelegate: NSObject , NSSplitViewDelegate{ 12 | // 实现底部视图尺寸固定不变 13 | func splitView(_ splitView: NSSplitView, resizeSubviewsWithOldSize oldSize: NSSize) { 14 | // 1. 获取原有顶部视图的高度 15 | guard let oldHeight = splitView.arrangedSubviews.first?.frame.height else { return } 16 | // 2. 调整splitView的布局 17 | splitView.adjustSubviews() 18 | // 3. 计算新的分隔条位置 19 | let changedHeight = splitView.frame.height - oldSize.height // 改变后的高度 - 原来的高度 20 | // 4. 设置splitView的分隔条位置 21 | splitView.setPosition(oldHeight + changedHeight, ofDividerAt: 0) 22 | } 23 | 24 | // 限制间隔条的最小值 25 | func splitView(_ splitView: NSSplitView, constrainMinCoordinate proposedMinimumPosition: CGFloat, ofSubviewAt dividerIndex: Int) -> CGFloat { 26 | return splitView.frame.height * 0.7 27 | } 28 | // 限制间隔条的最大值 29 | func splitView(_ splitView: NSSplitView, constrainMaxCoordinate proposedMaximumPosition: CGFloat, ofSubviewAt dividerIndex: Int) -> CGFloat { 30 | return splitView.frame.height * 0.85 31 | } 32 | } 33 | -------------------------------------------------------------------------------- /Folder/SimuLooker/SimuLooker/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | $(DEVELOPMENT_LANGUAGE) 7 | CFBundleExecutable 8 | $(EXECUTABLE_NAME) 9 | CFBundleIconFile 10 | 11 | CFBundleIdentifier 12 | $(PRODUCT_BUNDLE_IDENTIFIER) 13 | CFBundleInfoDictionaryVersion 14 | 6.0 15 | CFBundleName 16 | $(PRODUCT_NAME) 17 | CFBundlePackageType 18 | APPL 19 | CFBundleShortVersionString 20 | 0.1.0 21 | CFBundleVersion 22 | 1 23 | LSApplicationCategoryType 24 | public.app-category.developer-tools 25 | LSMinimumSystemVersion 26 | $(MACOSX_DEPLOYMENT_TARGET) 27 | LSUIElement 28 | 29 | NSHumanReadableCopyright 30 | Copyright © 2018年 alexiuce.github.io. All rights reserved. 31 | NSMainNibFile 32 | MainMenu 33 | NSPrincipalClass 34 | NSApplication 35 | 36 | 37 | -------------------------------------------------------------------------------- /Folder/SwiftQQ/SwiftQQ/Message/View/MsgCollectionItem.swift: -------------------------------------------------------------------------------- 1 | // 2 | // MsgCollectionItem.swift 3 | // SwiftQQ 4 | // 5 | // Created by Alexcai on 2018/2/19. 6 | // Copyright © 2018年 Alexcai. All rights reserved. 7 | // 8 | 9 | import Cocoa 10 | 11 | class MsgCollectionItem: NSCollectionViewItem { 12 | 13 | @IBOutlet var backgroundView: NSView! // 背景视图 14 | @IBOutlet weak var headImageView: NSImageView! // 头像 15 | @IBOutlet weak var nameLabel: NSTextField! // 名称 16 | @IBOutlet weak var textLabel: NSTextField! // 消息 17 | 18 | 19 | 20 | 21 | 22 | // 数模模型属性,用来接收数据 23 | var itemModel : MsgModel? { 24 | didSet{ 25 | guard let temp = itemModel else { return } 26 | headImageView.image = NSImage(named: NSImage.Name(rawValue: temp.headName)) 27 | nameLabel.stringValue = temp.name 28 | textLabel.stringValue = temp.text 29 | } 30 | } 31 | 32 | 33 | override func viewDidLoad() { 34 | super.viewDidLoad() 35 | // Do view setup here. 36 | } 37 | 38 | override var isSelected: Bool{ 39 | didSet{ 40 | let currentColor = isSelected ? NSColor.lightGray.cgColor : NSColor.white.cgColor 41 | backgroundView.layer?.backgroundColor = currentColor 42 | } 43 | } 44 | 45 | } 46 | -------------------------------------------------------------------------------- /Folder/SimuLooker/SimuStartHelper/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | $(DEVELOPMENT_LANGUAGE) 7 | CFBundleExecutable 8 | $(EXECUTABLE_NAME) 9 | CFBundleIconFile 10 | 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 | LSApplicationCategoryType 24 | public.app-category.developer-tools 25 | LSBackgroundOnly 26 | 27 | LSMinimumSystemVersion 28 | $(MACOSX_DEPLOYMENT_TARGET) 29 | NSHumanReadableCopyright 30 | Copyright © 2018年 alexiuce.github.io. All rights reserved. 31 | NSMainNibFile 32 | MainMenu 33 | NSPrincipalClass 34 | NSApplication 35 | 36 | 37 | -------------------------------------------------------------------------------- /Folder/SwiftQQ/SwiftQQ/More/more.storyboard: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | -------------------------------------------------------------------------------- /Folder/SwiftQQ/SwiftQQ/Contact/contact.storyboard: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | -------------------------------------------------------------------------------- /Folder/SimuLooker/Pods/Target Support Files/Pods-SimuLooker/Pods-SimuLooker-acknowledgements.markdown: -------------------------------------------------------------------------------- 1 | # Acknowledgements 2 | This application makes use of the following third party libraries: 3 | 4 | ## SwiftyJSON 5 | 6 | The MIT License (MIT) 7 | 8 | Copyright (c) 2017 Ruoyu Fu 9 | 10 | Permission is hereby granted, free of charge, to any person obtaining a copy 11 | of this software and associated documentation files (the "Software"), to deal 12 | in the Software without restriction, including without limitation the rights 13 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 14 | copies of the Software, and to permit persons to whom the Software is 15 | furnished to do so, subject to the following conditions: 16 | 17 | The above copyright notice and this permission notice shall be included in 18 | all copies or substantial portions of the Software. 19 | 20 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 21 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 22 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 23 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 24 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 25 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 26 | THE SOFTWARE. 27 | 28 | Generated by CocoaPods - https://cocoapods.org 29 | -------------------------------------------------------------------------------- /Folder/SwiftQQ/SwiftQQ/Login/HoverButton.swift: -------------------------------------------------------------------------------- 1 | // 2 | // HoverButton.swift 3 | // SwiftQQ 4 | // 5 | // Created by Alexcai on 2018/2/17. 6 | // Copyright © 2018年 Alexcai. All rights reserved. 7 | // 8 | 9 | import Cocoa 10 | 11 | class HoverButton: NSButton { 12 | 13 | var isHoverNormal = false // 鼠标移入时的显示状态 14 | var normalImage : NSImage? 15 | var hoverImaeg : NSImage? 16 | override func awakeFromNib() { 17 | 18 | } 19 | 20 | func addHover(normalImageName:String,hoverImageName:String) { 21 | let trackArea = NSTrackingArea(rect: bounds, options: [.activeInActiveApp,.mouseEnteredAndExited], owner: self, userInfo: nil) 22 | addTrackingArea(trackArea) 23 | normalImage = NSImage(named: NSImage.Name(normalImageName)) 24 | hoverImaeg = NSImage(named: NSImage.Name(hoverImageName)) 25 | } 26 | 27 | 28 | override func mouseEntered(with event: NSEvent) { 29 | image = hoverImaeg 30 | } 31 | 32 | override func mouseExited(with event: NSEvent) { 33 | if isHoverNormal { 34 | image = NSImage(named: NSImage.Name("icon-enter-normal")) 35 | }else{ 36 | image = normalImage 37 | } 38 | } 39 | 40 | 41 | // 更新normal状态下的图片 42 | func updateNormalImageName(name: String) { 43 | normalImage = NSImage(named: NSImage.Name(name)) 44 | } 45 | 46 | } 47 | -------------------------------------------------------------------------------- /Folder/SimulatorFinder/Pods/Target Support Files/Pods-SimulatorFinder/Pods-SimulatorFinder-acknowledgements.markdown: -------------------------------------------------------------------------------- 1 | # Acknowledgements 2 | This application makes use of the following third party libraries: 3 | 4 | ## SwiftyJSON 5 | 6 | The MIT License (MIT) 7 | 8 | Copyright (c) 2017 Ruoyu Fu 9 | 10 | Permission is hereby granted, free of charge, to any person obtaining a copy 11 | of this software and associated documentation files (the "Software"), to deal 12 | in the Software without restriction, including without limitation the rights 13 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 14 | copies of the Software, and to permit persons to whom the Software is 15 | furnished to do so, subject to the following conditions: 16 | 17 | The above copyright notice and this permission notice shall be included in 18 | all copies or substantial portions of the Software. 19 | 20 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 21 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 22 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 23 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 24 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 25 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 26 | THE SOFTWARE. 27 | 28 | Generated by CocoaPods - https://cocoapods.org 29 | -------------------------------------------------------------------------------- /Folder/SwiftQQ/SwiftQQ/New Group/HomeWindowController.swift: -------------------------------------------------------------------------------- 1 | // 2 | // HomeWindowController.swift 3 | // SwiftQQ 4 | // 5 | // Created by Alexcai on 2018/2/18. 6 | // Copyright © 2018年 Alexcai. All rights reserved. 7 | // 8 | 9 | import Cocoa 10 | 11 | class HomeWindowController: NSWindowController { 12 | 13 | override func windowDidLoad() { 14 | super.windowDidLoad() 15 | // 点击内容拖动窗口 16 | window?.isMovableByWindowBackground = true 17 | // 设置操作按钮居中显示在顶部视图 18 | updateTitleBarView() 19 | } 20 | 21 | deinit { 22 | print("home controller be dealloc ") 23 | } 24 | 25 | fileprivate func updateTitleBarView(){ 26 | // 1. 获取窗口的主视图 27 | guard let themeView = window?.contentView?.superview else { return } 28 | // 2. 根据主视图获取titleBar view 29 | guard let titleBarView = themeView.subviews.last else { return } 30 | // 3. 给titleBar view 添加约束效果,居中显示 31 | // 计算顶部居中显示公式: (顶部视图的高度 - titleBarView视图的高度: 系统默认值为22) / 2 32 | titleBarView.snp.makeConstraints { (make) in 33 | make.top.equalTo(15) 34 | make.left.equalTo(0) 35 | make.width.equalTo(60) 36 | make.height.equalTo(22) 37 | } 38 | } 39 | } 40 | 41 | extension HomeWindowController: NSWindowDelegate{ 42 | 43 | func windowDidResize(_ notification: Notification) { 44 | updateTitleBarView() 45 | } 46 | } 47 | 48 | -------------------------------------------------------------------------------- /Folder/SimuLooker/SimuLooker/Menu/SAppMenuItem.swift: -------------------------------------------------------------------------------- 1 | // 2 | // SAppMenuItem.swift 3 | // SimuLooker 4 | // 5 | // Created by caijinzhu on 2018/3/1. 6 | // Copyright © 2018年 alexiuce.github.io. All rights reserved. 7 | // 8 | 9 | import Cocoa 10 | 11 | class SAppMenuItem: NSMenuItem { 12 | 13 | override init(title string: String, action selector: Selector?, keyEquivalent charCode: String) { 14 | super.init(title: string, action: selector, keyEquivalent: charCode) 15 | setupUI() 16 | 17 | } 18 | 19 | required init(coder decoder: NSCoder) { 20 | fatalError("init(coder:) has not been implemented") 21 | } 22 | 23 | override var image: NSImage?{ 24 | didSet{ 25 | guard let img = image else {return} 26 | guard let v = view as? SAppItemView else {return} 27 | v.appIcon.image = img 28 | } 29 | } 30 | override var representedObject: Any?{ 31 | didSet{ 32 | guard let obj = representedObject as? SimuApplication else {return} 33 | guard let appView = view as? SAppItemView else {return} 34 | appView.application = obj 35 | } 36 | } 37 | 38 | } 39 | 40 | 41 | extension SAppMenuItem{ 42 | fileprivate func setupUI(){ 43 | let appView = SAppItemView(frame: NSMakeRect(0, 0, 275, 70)) 44 | appView.appName.stringValue = title 45 | view = appView 46 | } 47 | } 48 | -------------------------------------------------------------------------------- /Folder/SimuLooker/SimuLooker/PreferenceController/PreTableViewController.swift: -------------------------------------------------------------------------------- 1 | // 2 | // PreTableViewController.swift 3 | // SimuLooker 4 | // 5 | // Created by caijinzhu on 2018/2/28. 6 | // Copyright © 2018年 alexiuce.github.io. All rights reserved. 7 | // 8 | 9 | import Cocoa 10 | 11 | class PreTableViewController: NSTabViewController { 12 | 13 | 14 | override func viewDidLoad() { 15 | super.viewDidLoad() 16 | // Do view setup here. 17 | } 18 | 19 | 20 | override func tabView(_ tabView: NSTabView, didSelect tabViewItem: NSTabViewItem?) { 21 | super.tabView(tabView, didSelect: tabViewItem) 22 | 23 | guard let itemView = tabViewItem?.view, 24 | let window = view.window 25 | else {return} 26 | 27 | 28 | let oldFrame = window.frame 29 | 30 | let newViewSize = itemView.fittingSize 31 | 32 | var newFrame = window.frameRect(forContentRect: NSMakeRect(oldFrame.origin.x, oldFrame.origin.y, newViewSize.width, newViewSize.height)) 33 | 34 | let newY = oldFrame.origin.y - ( newFrame.size.height - oldFrame.size.height) 35 | newFrame.origin = NSMakePoint(oldFrame.origin.x, newY) 36 | 37 | NSAnimationContext.runAnimationGroup({ (context) in 38 | window.animator().setFrame(newFrame, display: window.isVisible) 39 | }, completionHandler: nil) 40 | 41 | } 42 | 43 | } 44 | -------------------------------------------------------------------------------- /Folder/SimuLooker/SimuLooker/Assets.xcassets/AppIcon.appiconset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "mac", 5 | "size" : "16x16", 6 | "scale" : "1x" 7 | }, 8 | { 9 | "idiom" : "mac", 10 | "size" : "16x16", 11 | "scale" : "2x" 12 | }, 13 | { 14 | "idiom" : "mac", 15 | "size" : "32x32", 16 | "scale" : "1x" 17 | }, 18 | { 19 | "idiom" : "mac", 20 | "size" : "32x32", 21 | "scale" : "2x" 22 | }, 23 | { 24 | "size" : "128x128", 25 | "idiom" : "mac", 26 | "filename" : "phone160 2-3.png", 27 | "scale" : "1x" 28 | }, 29 | { 30 | "size" : "128x128", 31 | "idiom" : "mac", 32 | "filename" : "phone160-1.png", 33 | "scale" : "2x" 34 | }, 35 | { 36 | "size" : "256x256", 37 | "idiom" : "mac", 38 | "filename" : "phone160 2-2.png", 39 | "scale" : "1x" 40 | }, 41 | { 42 | "size" : "256x256", 43 | "idiom" : "mac", 44 | "filename" : "phone160.png", 45 | "scale" : "2x" 46 | }, 47 | { 48 | "size" : "512x512", 49 | "idiom" : "mac", 50 | "filename" : "phone160 2.png", 51 | "scale" : "1x" 52 | }, 53 | { 54 | "size" : "512x512", 55 | "idiom" : "mac", 56 | "filename" : "phone160 2-1.png", 57 | "scale" : "2x" 58 | } 59 | ], 60 | "info" : { 61 | "version" : 1, 62 | "author" : "xcode" 63 | } 64 | } -------------------------------------------------------------------------------- /Folder/FinderToolDemo/FinderExtensionDemo/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | $(DEVELOPMENT_LANGUAGE) 7 | CFBundleDisplayName 8 | FinderExtensionDemo 9 | CFBundleExecutable 10 | $(EXECUTABLE_NAME) 11 | CFBundleIdentifier 12 | $(PRODUCT_BUNDLE_IDENTIFIER) 13 | CFBundleInfoDictionaryVersion 14 | 6.0 15 | CFBundleName 16 | $(PRODUCT_NAME) 17 | CFBundlePackageType 18 | XPC! 19 | CFBundleShortVersionString 20 | 1.0 21 | CFBundleVersion 22 | 1 23 | LSMinimumSystemVersion 24 | $(MACOSX_DEPLOYMENT_TARGET) 25 | LSUIElement 26 | 27 | NSExtension 28 | 29 | NSExtensionAttributes 30 | 31 | NSExtensionPointIdentifier 32 | com.apple.FinderSync 33 | NSExtensionPrincipalClass 34 | FinderSync 35 | 36 | NSHumanReadableCopyright 37 | Copyright © 2019 dongjiu. All rights reserved. 38 | NSPrincipalClass 39 | NSApplication 40 | 41 | 42 | -------------------------------------------------------------------------------- /Folder/SwiftQQ/SwiftQQ/ThirdLibs/SnapKit/Source/ConstraintView.swift: -------------------------------------------------------------------------------- 1 | // 2 | // SnapKit 3 | // 4 | // Copyright (c) 2011-Present SnapKit Team - https://github.com/SnapKit 5 | // 6 | // Permission is hereby granted, free of charge, to any person obtaining a copy 7 | // of this software and associated documentation files (the "Software"), to deal 8 | // in the Software without restriction, including without limitation the rights 9 | // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 10 | // copies of the Software, and to permit persons to whom the Software is 11 | // furnished to do so, subject to the following conditions: 12 | // 13 | // The above copyright notice and this permission notice shall be included in 14 | // all copies or substantial portions of the Software. 15 | // 16 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 17 | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 18 | // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 19 | // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 20 | // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 21 | // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 22 | // THE SOFTWARE. 23 | 24 | #if os(iOS) || os(tvOS) 25 | import UIKit 26 | #else 27 | import AppKit 28 | #endif 29 | 30 | 31 | #if os(iOS) || os(tvOS) 32 | public typealias ConstraintView = UIView 33 | #else 34 | public typealias ConstraintView = NSView 35 | #endif 36 | -------------------------------------------------------------------------------- /Folder/SimuLooker/SimuLooker/Model/SimuDeviceManager.swift: -------------------------------------------------------------------------------- 1 | // 2 | // SimuDeviceManager.swift 3 | // SimuLooker 4 | // 5 | // Created by caijinzhu on 2018/2/27. 6 | // Copyright © 2018年 alexiuce.github.io. All rights reserved. 7 | // 8 | 9 | import Foundation 10 | 11 | import SwiftyJSON 12 | 13 | struct SimuDeviceManager { 14 | 15 | @discardableResult 16 | static func loadSimuDevice() -> [String:[Device]] { 17 | let cmdResult = ShellTask.execCmd(cmd: "/usr/bin/xcrun", arguments: ["simctl","list","-j","devices"]) 18 | let json = JSON.init(parseJSON: cmdResult) 19 | var result = [String:[Device]]() 20 | 21 | json["devices"].dictionaryValue.forEach { (key,value) in 22 | if !key.contains("iOS"){return} 23 | var newkey = key; 24 | let range = (key as NSString).range(of: ".iOS") 25 | if range.location != NSNotFound { 26 | newkey = (key as NSString).substring(from: range.location + 1) 27 | } 28 | result[newkey] = [Device]() 29 | value.arrayValue.forEach({ (deviceJson) in 30 | let device = Device(osInfo: newkey, json: deviceJson) 31 | if device.appArray.count > 0 { 32 | result[newkey]?.append(device) 33 | } 34 | }) 35 | 36 | guard let count = result[newkey]?.count else { return } 37 | if count < 1 { 38 | result[newkey] = nil 39 | } 40 | } 41 | 42 | return result 43 | } 44 | } 45 | -------------------------------------------------------------------------------- /Folder/SwiftQQ/SwiftQQ/ThirdLibs/SnapKit/Source/ConstraintInsets.swift: -------------------------------------------------------------------------------- 1 | // 2 | // SnapKit 3 | // 4 | // Copyright (c) 2011-Present SnapKit Team - https://github.com/SnapKit 5 | // 6 | // Permission is hereby granted, free of charge, to any person obtaining a copy 7 | // of this software and associated documentation files (the "Software"), to deal 8 | // in the Software without restriction, including without limitation the rights 9 | // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 10 | // copies of the Software, and to permit persons to whom the Software is 11 | // furnished to do so, subject to the following conditions: 12 | // 13 | // The above copyright notice and this permission notice shall be included in 14 | // all copies or substantial portions of the Software. 15 | // 16 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 17 | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 18 | // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 19 | // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 20 | // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 21 | // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 22 | // THE SOFTWARE. 23 | 24 | #if os(iOS) || os(tvOS) 25 | import UIKit 26 | #else 27 | import AppKit 28 | #endif 29 | 30 | 31 | #if os(iOS) || os(tvOS) 32 | public typealias ConstraintInsets = UIEdgeInsets 33 | #else 34 | public typealias ConstraintInsets = NSEdgeInsets 35 | #endif 36 | -------------------------------------------------------------------------------- /Folder/SimuLooker/SimuLooker/Menu/SAppItemView.swift: -------------------------------------------------------------------------------- 1 | // 2 | // SAppItemView.swift 3 | // SimuLooker 4 | // 5 | // Created by caijinzhu on 2018/3/2. 6 | // Copyright © 2018年 alexiuce.github.io. All rights reserved. 7 | // 8 | 9 | import Cocoa 10 | 11 | class SAppItemView: NSView { 12 | 13 | @IBOutlet weak var appIcon: NSImageView! 14 | @IBOutlet weak var appName: NSTextField! 15 | 16 | @IBOutlet var backgroundView: NSView! 17 | 18 | @IBOutlet weak var bottomLineView: NSView! 19 | 20 | var application : SimuApplication? 21 | 22 | 23 | override init(frame frameRect: NSRect) { 24 | super.init(frame: frameRect) 25 | 26 | Bundle.main.loadNibNamed(NSNib.Name.init(rawValue: "SAppMenuItem"), owner: self, topLevelObjects: nil) 27 | 28 | self.addSubview(backgroundView) 29 | } 30 | 31 | required init?(coder decoder: NSCoder) { 32 | fatalError("init(coder:) has not been implemented") 33 | } 34 | 35 | 36 | override func awakeFromNib() { 37 | super.awakeFromNib() 38 | 39 | bottomLineView.layer?.backgroundColor = NSColor.lightGray.cgColor 40 | } 41 | 42 | @IBAction func openAppDocumentLocation(_ sender: Any) { 43 | 44 | guard let path = application?.documentPath else { return } 45 | NSWorkspace.shared.open(path) 46 | 47 | } 48 | 49 | @IBAction func openAppLocation(_ sender: Any) { 50 | 51 | guard let path = application?.path else { return } 52 | NSWorkspace.shared.open(path) 53 | } 54 | } 55 | -------------------------------------------------------------------------------- /Folder/SimulatorFinder/SimulatorFinder/Menu/AppItemView.swift: -------------------------------------------------------------------------------- 1 | // 2 | // AppItemView.swift 3 | // SimulatorFinder 4 | // 5 | // Created by Alexcai on 2018/3/3. 6 | // Copyright © 2018年 Alexcai. All rights reserved. 7 | // 8 | 9 | import Cocoa 10 | 11 | class AppItemView: NSView { 12 | @IBOutlet var contentView: NSView! 13 | 14 | @IBOutlet weak var appName: NSTextField! 15 | 16 | @IBOutlet weak var appID: NSTextField! 17 | 18 | @IBOutlet weak var appIcon: NSImageView! 19 | 20 | var appData : App? // 用来接收app模型数据 21 | 22 | override init(frame frameRect: NSRect) { 23 | 24 | super.init(frame: frameRect) 25 | Bundle.main.loadNibNamed(NSNib.Name.init(rawValue: "AppItemView"), owner: self, topLevelObjects: nil) 26 | addSubview(contentView) 27 | } 28 | 29 | required init?(coder decoder: NSCoder) { 30 | super.init(coder: decoder) 31 | } 32 | 33 | @IBAction func openAppLocation(_ sender: Any) { 34 | 35 | guard let app = appData else { return } 36 | print("click app location button") 37 | guard let appLocationUrl = app.appPath else { return } 38 | // 打开指定url路径 39 | NSWorkspace.shared.open(appLocationUrl) 40 | } 41 | 42 | 43 | @IBAction func openDoclocation(_ sender: Any) { 44 | print("click app document button") 45 | guard let app = appData else { return } 46 | guard let appDocumentURL = app.appDocumentPath else { return } 47 | NSWorkspace.shared.open(appDocumentURL) 48 | } 49 | 50 | } 51 | -------------------------------------------------------------------------------- /Folder/SwiftQQ/SwiftQQ/Message/View/BaseSplitViewDelegate.swift: -------------------------------------------------------------------------------- 1 | // 2 | // BaseSplitViewDelegate.swift 3 | // SwiftQQ 4 | // 5 | // Created by Alexcai on 2018/2/19. 6 | // Copyright © 2018年 Alexcai. All rights reserved. 7 | // 8 | 9 | import Cocoa 10 | 11 | class BaseSplitViewDelegate: NSObject, NSSplitViewDelegate { 12 | // collectionView的布局,用来处理当splitView改变子视图时,collectionView的item更新size 13 | var collectionLayout: NSCollectionViewFlowLayout? 14 | 15 | 16 | // 实现一侧视图的尺寸固定不变 17 | func splitView(_ splitView: NSSplitView, resizeSubviewsWithOldSize oldSize: NSSize) { 18 | // 1. 获取需要保持不变的子视图的原有尺寸 19 | guard let leftWidth = splitView.arrangedSubviews.first?.frame.width else { return } 20 | // 2. 更新splitView的布局 21 | splitView.adjustSubviews() 22 | // 3. 设置分隔条的位置,保持原有不变 23 | splitView.setPosition(leftWidth, ofDividerAt: 0) 24 | 25 | } 26 | 27 | // 限制间隔条的最小值 28 | func splitView(_ splitView: NSSplitView, constrainMinCoordinate proposedMinimumPosition: CGFloat, ofSubviewAt dividerIndex: Int) -> CGFloat { 29 | return 100 30 | } 31 | // 限制间隔条的最大值 32 | func splitView(_ splitView: NSSplitView, constrainMaxCoordinate proposedMaximumPosition: CGFloat, ofSubviewAt dividerIndex: Int) -> CGFloat { 33 | return 200 34 | } 35 | 36 | // 更新子视图 37 | func splitViewDidResizeSubviews(_ notification: Notification) { 38 | guard let width = collectionLayout?.collectionView?.frame.width else { return } 39 | collectionLayout?.itemSize = NSMakeSize(width, 90) 40 | } 41 | 42 | 43 | } 44 | -------------------------------------------------------------------------------- /Folder/SimulatorFinder/SimulatorFinder/Model/App.swift: -------------------------------------------------------------------------------- 1 | // 2 | // App.swift 3 | // SimulatorFinder 4 | // 5 | // Created by Alexcai on 2018/2/28. 6 | // Copyright © 2018年 Alexcai. All rights reserved. 7 | // 8 | 9 | import Cocoa 10 | 11 | 12 | class App { 13 | //名称 14 | var name = "" 15 | var icon: NSImage? 16 | var bid = "" // app 的bundle identify 17 | var appDocumentPath: URL? // 用来打开app data的路径 18 | var appPath: URL?{ 19 | didSet{ 20 | guard let path = appPath else {return} 21 | guard let appBundle = PathManager.allSubDirectoryInPath(path).first else {return} 22 | let plistPath = path.appendingPathComponent("\(appBundle)/Info.plist") 23 | guard let plistDict = NSDictionary(contentsOfFile: plistPath.path) else {return} 24 | // 设置应用名 25 | name = plistDict["CFBundleDisplayName"] as? String ?? plistDict["CFBundleName"] as? String ?? "" 26 | // 设置bundle id 27 | bid = plistDict["CFBundleIdentifier"] as? String ?? "" 28 | // 设置应用icon 29 | guard let CFBundleIcons = plistDict["CFBundleIcons"] as? NSDictionary, 30 | let CFBundlePrimaryIcon = CFBundleIcons["CFBundlePrimaryIcon"] as? NSDictionary, 31 | let CFBundleIconFiles = CFBundlePrimaryIcon["CFBundleIconFiles"] as? NSArray, 32 | let iconName = CFBundleIconFiles.lastObject as? String 33 | else {return} 34 | 35 | icon = Bundle(url: path.appendingPathComponent(appBundle))?.image(forResource: NSImage.Name(iconName)) 36 | } 37 | } 38 | } 39 | -------------------------------------------------------------------------------- /Folder/SwiftQQ/SwiftQQ/ThirdLibs/SnapKit/Source/ConstraintLayoutSupport.swift: -------------------------------------------------------------------------------- 1 | // 2 | // SnapKit 3 | // 4 | // Copyright (c) 2011-Present SnapKit Team - https://github.com/SnapKit 5 | // 6 | // Permission is hereby granted, free of charge, to any person obtaining a copy 7 | // of this software and associated documentation files (the "Software"), to deal 8 | // in the Software without restriction, including without limitation the rights 9 | // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 10 | // copies of the Software, and to permit persons to whom the Software is 11 | // furnished to do so, subject to the following conditions: 12 | // 13 | // The above copyright notice and this permission notice shall be included in 14 | // all copies or substantial portions of the Software. 15 | // 16 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 17 | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 18 | // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 19 | // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 20 | // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 21 | // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 22 | // THE SOFTWARE. 23 | 24 | #if os(iOS) || os(tvOS) 25 | import UIKit 26 | #else 27 | import AppKit 28 | #endif 29 | 30 | 31 | #if os(iOS) || os(tvOS) 32 | @available(iOS 8.0, *) 33 | public typealias ConstraintLayoutSupport = UILayoutSupport 34 | #else 35 | public class ConstraintLayoutSupport {} 36 | #endif 37 | -------------------------------------------------------------------------------- /Folder/SwiftQQ/SwiftQQ/ThirdLibs/SnapKit/Source/UILayoutSupport+Extensions.swift: -------------------------------------------------------------------------------- 1 | // 2 | // SnapKit 3 | // 4 | // Copyright (c) 2011-Present SnapKit Team - https://github.com/SnapKit 5 | // 6 | // Permission is hereby granted, free of charge, to any person obtaining a copy 7 | // of this software and associated documentation files (the "Software"), to deal 8 | // in the Software without restriction, including without limitation the rights 9 | // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 10 | // copies of the Software, and to permit persons to whom the Software is 11 | // furnished to do so, subject to the following conditions: 12 | // 13 | // The above copyright notice and this permission notice shall be included in 14 | // all copies or substantial portions of the Software. 15 | // 16 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 17 | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 18 | // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 19 | // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 20 | // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 21 | // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 22 | // THE SOFTWARE. 23 | 24 | #if os(iOS) || os(tvOS) 25 | import UIKit 26 | #endif 27 | 28 | 29 | @available(iOS 8.0, *) 30 | public extension ConstraintLayoutSupport { 31 | 32 | public var snp: ConstraintLayoutSupportDSL { 33 | return ConstraintLayoutSupportDSL(support: self) 34 | } 35 | 36 | } 37 | -------------------------------------------------------------------------------- /Folder/SwiftQQ/SwiftQQ/ThirdLibs/SnapKit/Source/ConstraintLayoutGuide+Extensions.swift: -------------------------------------------------------------------------------- 1 | // 2 | // SnapKit 3 | // 4 | // Copyright (c) 2011-Present SnapKit Team - https://github.com/SnapKit 5 | // 6 | // Permission is hereby granted, free of charge, to any person obtaining a copy 7 | // of this software and associated documentation files (the "Software"), to deal 8 | // in the Software without restriction, including without limitation the rights 9 | // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 10 | // copies of the Software, and to permit persons to whom the Software is 11 | // furnished to do so, subject to the following conditions: 12 | // 13 | // The above copyright notice and this permission notice shall be included in 14 | // all copies or substantial portions of the Software. 15 | // 16 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 17 | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 18 | // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 19 | // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 20 | // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 21 | // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 22 | // THE SOFTWARE. 23 | 24 | #if os(iOS) || os(tvOS) 25 | import UIKit 26 | #endif 27 | 28 | 29 | @available(iOS 9.0, OSX 10.11, *) 30 | public extension ConstraintLayoutGuide { 31 | 32 | public var snp: ConstraintLayoutGuideDSL { 33 | return ConstraintLayoutGuideDSL(guide: self) 34 | } 35 | 36 | } 37 | -------------------------------------------------------------------------------- /Folder/SimuLooker/SimuStartHelper/AppDelegate.swift: -------------------------------------------------------------------------------- 1 | // 2 | // AppDelegate.swift 3 | // SimuStartHelper 4 | // 5 | // Created by Alexcai on 2018/9/4. 6 | // Copyright © 2018年 alexiuce.github.io. All rights reserved. 7 | // 8 | 9 | import Cocoa 10 | 11 | @NSApplicationMain 12 | class AppDelegate: NSObject, NSApplicationDelegate { 13 | 14 | @IBOutlet weak var window: NSWindow! 15 | 16 | 17 | func applicationDidFinishLaunching(_ aNotification: Notification) { 18 | var mainIsRunning = false 19 | let mainAppId = "alexiuce.SimuLooker" 20 | NSWorkspace.shared.runningApplications.forEach { 21 | mainIsRunning = $0.bundleIdentifier == mainAppId 22 | } 23 | if mainIsRunning { // 如果主应用已经启动,则退出helper 24 | NSApp.terminate(nil) 25 | }else{ // 如果主应用未启动,则启动主应用 26 | 27 | let path = Bundle.main.bundlePath 28 | 29 | let appPath = path.replacingOccurrences(of: "/Library/LoginItems/SimuStartHelper.app", with:"/MacOS/SimuLooker") 30 | if !FileManager.default.fileExists(atPath: appPath) { 31 | return; 32 | } 33 | let runningArray = NSRunningApplication.runningApplications(withBundleIdentifier: mainAppId) 34 | if (runningArray.count > 0) { 35 | return; 36 | } 37 | NSWorkspace.shared.launchApplication(appPath) 38 | NSApp.terminate(nil) 39 | } 40 | 41 | 42 | } 43 | 44 | func applicationWillTerminate(_ aNotification: Notification) { 45 | // Insert code here to tear down your application 46 | } 47 | 48 | 49 | } 50 | 51 | -------------------------------------------------------------------------------- /Folder/SwiftQQ/SwiftQQ/ThirdLibs/SnapKit/Source/ConstraintLayoutGuide.swift: -------------------------------------------------------------------------------- 1 | // 2 | // SnapKit 3 | // 4 | // Copyright (c) 2011-Present SnapKit Team - https://github.com/SnapKit 5 | // 6 | // Permission is hereby granted, free of charge, to any person obtaining a copy 7 | // of this software and associated documentation files (the "Software"), to deal 8 | // in the Software without restriction, including without limitation the rights 9 | // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 10 | // copies of the Software, and to permit persons to whom the Software is 11 | // furnished to do so, subject to the following conditions: 12 | // 13 | // The above copyright notice and this permission notice shall be included in 14 | // all copies or substantial portions of the Software. 15 | // 16 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 17 | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 18 | // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 19 | // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 20 | // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 21 | // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 22 | // THE SOFTWARE. 23 | 24 | #if os(iOS) || os(tvOS) 25 | import UIKit 26 | #else 27 | import AppKit 28 | #endif 29 | 30 | 31 | #if os(iOS) || os(tvOS) 32 | @available(iOS 9.0, *) 33 | public typealias ConstraintLayoutGuide = UILayoutGuide 34 | #else 35 | @available(OSX 10.11, *) 36 | public typealias ConstraintLayoutGuide = NSLayoutGuide 37 | #endif 38 | -------------------------------------------------------------------------------- /Folder/SimulatorFinder/SimulatorFinder/Manager/DeviceManager.swift: -------------------------------------------------------------------------------- 1 | // 2 | // DeviceManager.swift 3 | // SimulatorFinder 4 | // 5 | // Created by Alexcai on 2018/2/28. 6 | // Copyright © 2018年 Alexcai. All rights reserved. 7 | // 8 | 9 | import Foundation 10 | 11 | import SwiftyJSON 12 | 13 | class DeviceManager { 14 | 15 | static func loadDevice() -> [String: [Device]]{ 16 | let resut = Shell.execmd("/usr/bin/xcrun", arguments: ["simctl","list","-j","devices"]) 17 | let json = JSON.init(parseJSON: resut) 18 | 19 | var devicesDict = [String: [Device]]() 20 | json["devices"].dictionaryValue.forEach { (osKey, value) in 21 | // 在foreach中,使用return 相当于普通for循环中的continue 22 | if !osKey.contains("iOS"){return} 23 | 24 | if value.arrayValue.count > 0 { 25 | devicesDict[osKey] = [Device]() 26 | value.arrayValue.forEach({ (deviceJson) in 27 | let device = Device(convertOS(osKey), json: deviceJson) 28 | // 判断设备是否有安装过app,只将安装过app的设备添加到数组中 29 | if device.installApps.count > 0 { 30 | devicesDict[osKey]?.append(device) 31 | } 32 | }) 33 | } 34 | } 35 | return devicesDict 36 | } 37 | 38 | 39 | static func convertOS(_ key: String) -> OS { 40 | if key.contains("tvOs") { 41 | return .tvOs 42 | }else if key.contains("watchOS"){ 43 | return .watchOs 44 | }else if key.contains("iOS"){ 45 | return .iOS 46 | }else{ 47 | return .unknow 48 | } 49 | } 50 | 51 | 52 | } 53 | -------------------------------------------------------------------------------- /Folder/SimulatorFinder/SimulatorFinder/Preference/PTabViewController.swift: -------------------------------------------------------------------------------- 1 | // 2 | // PTabViewController.swift 3 | // SimulatorFinder 4 | // 5 | // Created by Alexcai on 2018/3/3. 6 | // Copyright © 2018年 Alexcai. All rights reserved. 7 | // 8 | 9 | import Cocoa 10 | 11 | class PTabViewController: NSTabViewController { 12 | 13 | override func viewDidLoad() { 14 | super.viewDidLoad() 15 | // Do view setup here. 16 | } 17 | 18 | override func tabView(_ tabView: NSTabView, didSelect tabViewItem: NSTabViewItem?) { 19 | super.tabView(tabView, didSelect: tabViewItem) 20 | 21 | guard let window = view.window else { return } 22 | guard let tabItemView = tabViewItem?.view else { return } 23 | 24 | 25 | 26 | // 原来的frame(改变之前的) 27 | let oldFrame = window.frame 28 | 29 | // 计算改变之后的新的Frame 30 | // 1. 获取显示view的size 31 | let showViewSize = tabItemView.fittingSize 32 | // 2. 根据显示view的size计算window的frame 33 | // 3. 计算新的y坐标 34 | var newFrame = window.frameRect(forContentRect: NSMakeRect(oldFrame.origin.x, oldFrame.origin.y, showViewSize.width, showViewSize.height)) 35 | 36 | let newY = oldFrame.origin.y - (newFrame.size.height - oldFrame.size.height) 37 | 38 | newFrame.origin = NSMakePoint(oldFrame.origin.x, newY) 39 | 40 | // 设置window frame 变更动画 41 | 42 | NSAnimationContext.runAnimationGroup({ (context) in 43 | window.animator().setFrame(newFrame, display: window.isVisible) 44 | }, completionHandler: nil) 45 | 46 | 47 | 48 | 49 | } 50 | 51 | } 52 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # Xcode 2 | # 3 | # gitignore contributors: remember to update Global/Xcode.gitignore, Objective-C.gitignore & Swift.gitignore 4 | 5 | ## Build generated 6 | build/ 7 | DerivedData/ 8 | 9 | ## Various settings 10 | *.pbxuser 11 | !default.pbxuser 12 | *.mode1v3 13 | !default.mode1v3 14 | *.mode2v3 15 | !default.mode2v3 16 | *.perspectivev3 17 | !default.perspectivev3 18 | xcuserdata/ 19 | 20 | ## Other 21 | *.moved-aside 22 | *.xccheckout 23 | *.xcscmblueprint 24 | *.DS_Store 25 | 26 | ## Obj-C/Swift specific 27 | *.hmap 28 | *.ipa 29 | *.dSYM.zip 30 | *.dSYM 31 | 32 | ## Playgrounds 33 | timeline.xctimeline 34 | playground.xcworkspace 35 | 36 | # Swift Package Manager 37 | # 38 | # Add this line if you want to avoid checking in source code from Swift Package Manager dependencies. 39 | # Packages/ 40 | # Package.pins 41 | .build/ 42 | 43 | # CocoaPods 44 | # 45 | # We recommend against adding the Pods directory to your .gitignore. However 46 | # you should judge for yourself, the pros and cons are mentioned at: 47 | # https://guides.cocoapods.org/using/using-cocoapods.html#should-i-check-the-pods-directory-into-source-control 48 | # 49 | # Pods/ 50 | 51 | # Carthage 52 | # 53 | # Add this line if you want to avoid checking in source code from Carthage dependencies. 54 | # Carthage/Checkouts 55 | 56 | Carthage/Build 57 | 58 | # fastlane 59 | # 60 | # It is recommended to not store the screenshots in the git repo. Instead, use fastlane to re-generate the 61 | # screenshots whenever they are needed. 62 | # For more information about the recommended setup visit: 63 | # https://docs.fastlane.tools/best-practices/source-control/#source-control 64 | 65 | fastlane/report.xml 66 | fastlane/Preview.html 67 | fastlane/screenshots 68 | fastlane/test_output 69 | -------------------------------------------------------------------------------- /Folder/SwiftQQ/SwiftQQ/ThirdLibs/SnapKit/Source/ConstraintConfig.swift: -------------------------------------------------------------------------------- 1 | // 2 | // SnapKit 3 | // 4 | // Copyright (c) 2011-Present SnapKit Team - https://github.com/SnapKit 5 | // 6 | // Permission is hereby granted, free of charge, to any person obtaining a copy 7 | // of this software and associated documentation files (the "Software"), to deal 8 | // in the Software without restriction, including without limitation the rights 9 | // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 10 | // copies of the Software, and to permit persons to whom the Software is 11 | // furnished to do so, subject to the following conditions: 12 | // 13 | // The above copyright notice and this permission notice shall be included in 14 | // all copies or substantial portions of the Software. 15 | // 16 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 17 | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 18 | // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 19 | // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 20 | // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 21 | // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 22 | // THE SOFTWARE. 23 | 24 | #if os(iOS) || os(tvOS) 25 | import UIKit 26 | public typealias ConstraintInterfaceLayoutDirection = UIUserInterfaceLayoutDirection 27 | #else 28 | import AppKit 29 | public typealias ConstraintInterfaceLayoutDirection = NSUserInterfaceLayoutDirection 30 | #endif 31 | 32 | 33 | public struct ConstraintConfig { 34 | 35 | public static var interfaceLayoutDirection: ConstraintInterfaceLayoutDirection = .leftToRight 36 | 37 | } 38 | -------------------------------------------------------------------------------- /Folder/SwiftQQ/SwiftQQ/ThirdLibs/SnapKit/Source/Typealiases.swift: -------------------------------------------------------------------------------- 1 | // 2 | // SnapKit 3 | // 4 | // Copyright (c) 2011-Present SnapKit Team - https://github.com/SnapKit 5 | // 6 | // Permission is hereby granted, free of charge, to any person obtaining a copy 7 | // of this software and associated documentation files (the "Software"), to deal 8 | // in the Software without restriction, including without limitation the rights 9 | // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 10 | // copies of the Software, and to permit persons to whom the Software is 11 | // furnished to do so, subject to the following conditions: 12 | // 13 | // The above copyright notice and this permission notice shall be included in 14 | // all copies or substantial portions of the Software. 15 | // 16 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 17 | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 18 | // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 19 | // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 20 | // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 21 | // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 22 | // THE SOFTWARE. 23 | 24 | import Foundation 25 | 26 | #if os(iOS) || os(tvOS) 27 | import UIKit 28 | typealias LayoutRelation = NSLayoutRelation 29 | typealias LayoutAttribute = NSLayoutAttribute 30 | typealias LayoutPriority = UILayoutPriority 31 | #else 32 | import AppKit 33 | typealias LayoutRelation = NSLayoutConstraint.Relation 34 | typealias LayoutAttribute = NSLayoutConstraint.Attribute 35 | typealias LayoutPriority = NSLayoutConstraint.Priority 36 | #endif 37 | 38 | -------------------------------------------------------------------------------- /Folder/SimulatorFinder/SimulatorFinder/Manager/PathManager.swift: -------------------------------------------------------------------------------- 1 | // 2 | // PathManager.swift 3 | // SimulatorFinder 4 | // 5 | // Created by Alexcai on 2018/3/2. 6 | // Copyright © 2018年 Alexcai. All rights reserved. 7 | // 用来管理所有路径相关功能的模块 8 | 9 | import Foundation 10 | 11 | 12 | 13 | struct PathManager { 14 | 15 | 16 | // 系统资源库的路径 : 入口的路径 17 | static var entryPathUrl : URL{ 18 | let libraryPath = NSSearchPathForDirectoriesInDomains(FileManager.SearchPathDirectory.libraryDirectory, FileManager.SearchPathDomainMask.userDomainMask, true).first ?? "" 19 | let libraryURL = URL(fileURLWithPath: libraryPath) 20 | return libraryURL.appendingPathComponent("Developer/CoreSimulator/Devices") 21 | } 22 | 23 | // 根据设备的UDID获取安装的App的路径 24 | static func applicationInDevice(_ udid: String) -> URL{ 25 | return entryPathUrl.appendingPathComponent("\(udid)/data/Containers/Bundle/Application") 26 | } 27 | /* 获取app的Document 的url*/ 28 | static func applicationDocumentURL(_ udid: String) -> URL{ 29 | return entryPathUrl.appendingPathComponent("\(udid)/data/Containers/Data/Application") 30 | } 31 | 32 | 33 | // 获取指定路径下的所有内容子路径(不包括文件) 34 | static func allSubDirectoryInPath(_ path: URL) -> [String] { 35 | let allDirectory = (try? FileManager.default.contentsOfDirectory(atPath: path.path))?.filter({ (appPath) -> Bool in 36 | return isDirectory(path.appendingPathComponent(appPath).path) && !appPath.hasPrefix(".") 37 | }) 38 | return allDirectory ?? [] 39 | } 40 | 41 | 42 | // 判断指定path是否为文件夹 43 | static func isDirectory(_ path: String) -> Bool{ 44 | var flag = ObjCBool(false) 45 | FileManager.default.fileExists(atPath: path, isDirectory: &flag) 46 | return flag.boolValue 47 | } 48 | 49 | 50 | } 51 | -------------------------------------------------------------------------------- /Folder/SimuLooker/SimuLooker/PreferenceController/AdvanceController.swift: -------------------------------------------------------------------------------- 1 | // 2 | // TwoController.swift 3 | // SimuLooker 4 | // 5 | // Created by caijinzhu on 2018/2/28. 6 | // Copyright © 2018年 alexiuce.github.io. All rights reserved. 7 | // 8 | 9 | import Cocoa 10 | import ServiceManagement 11 | 12 | class AdvanceController: NSViewController { 13 | 14 | @IBOutlet var backgroundView: NSView! 15 | 16 | 17 | @IBOutlet weak var autoStartButton: NSButton! 18 | 19 | 20 | override func viewDidLoad() { 21 | super.viewDidLoad() 22 | 23 | view.layer?.backgroundColor = NSColor.lightGray.cgColor 24 | self.preferredContentSize = view.frame.size 25 | 26 | let isAuto = UserDefaults.standard.bool(forKey: "simu_auto_start_key") 27 | autoStartButton.state = isAuto ? .on : .off 28 | 29 | 30 | } 31 | 32 | @IBAction func clickAutostartButton(_ sender: NSButton) { 33 | 34 | let isAutostart = sender.state == .on 35 | startupAppWhenLogin(startup: isAutostart) 36 | UserDefaults.standard.set(isAutostart, forKey:"simu_auto_start_key") 37 | UserDefaults.standard.synchronize() 38 | 39 | } 40 | 41 | } 42 | 43 | extension AdvanceController{ 44 | fileprivate func startupAppWhenLogin(startup: Bool) { 45 | 46 | let launcherAppIdentifier = "com.alexiuce.SimuLookerAutoStartHelper" 47 | 48 | let launcherAppPath = (Bundle.main.bundlePath as NSString).appendingPathComponent("Contents/Library/LoginItems/SimuStartHelper.app") 49 | 50 | if !FileManager.default.fileExists(atPath: launcherAppPath) { 51 | return 52 | } 53 | 54 | let configResult = SMLoginItemSetEnabled(launcherAppIdentifier as CFString, startup); 55 | print("\(configResult)") 56 | 57 | 58 | } 59 | 60 | 61 | } 62 | 63 | -------------------------------------------------------------------------------- /Folder/SwiftQQ/SwiftQQ/ThirdLibs/SnapKit/Source/ConstraintRelation.swift: -------------------------------------------------------------------------------- 1 | // 2 | // SnapKit 3 | // 4 | // Copyright (c) 2011-Present SnapKit Team - https://github.com/SnapKit 5 | // 6 | // Permission is hereby granted, free of charge, to any person obtaining a copy 7 | // of this software and associated documentation files (the "Software"), to deal 8 | // in the Software without restriction, including without limitation the rights 9 | // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 10 | // copies of the Software, and to permit persons to whom the Software is 11 | // furnished to do so, subject to the following conditions: 12 | // 13 | // The above copyright notice and this permission notice shall be included in 14 | // all copies or substantial portions of the Software. 15 | // 16 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 17 | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 18 | // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 19 | // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 20 | // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 21 | // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 22 | // THE SOFTWARE. 23 | 24 | #if os(iOS) || os(tvOS) 25 | import UIKit 26 | #else 27 | import AppKit 28 | #endif 29 | 30 | 31 | internal enum ConstraintRelation : Int { 32 | case equal = 1 33 | case lessThanOrEqual 34 | case greaterThanOrEqual 35 | 36 | internal var layoutRelation: LayoutRelation { 37 | get { 38 | switch(self) { 39 | case .equal: 40 | return .equal 41 | case .lessThanOrEqual: 42 | return .lessThanOrEqual 43 | case .greaterThanOrEqual: 44 | return .greaterThanOrEqual 45 | } 46 | } 47 | } 48 | } 49 | -------------------------------------------------------------------------------- /Folder/SwiftQQ/SwiftQQ/ThirdLibs/SnapKit/Source/ConstraintMakerFinalizable.swift: -------------------------------------------------------------------------------- 1 | // 2 | // SnapKit 3 | // 4 | // Copyright (c) 2011-Present SnapKit Team - https://github.com/SnapKit 5 | // 6 | // Permission is hereby granted, free of charge, to any person obtaining a copy 7 | // of this software and associated documentation files (the "Software"), to deal 8 | // in the Software without restriction, including without limitation the rights 9 | // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 10 | // copies of the Software, and to permit persons to whom the Software is 11 | // furnished to do so, subject to the following conditions: 12 | // 13 | // The above copyright notice and this permission notice shall be included in 14 | // all copies or substantial portions of the Software. 15 | // 16 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 17 | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 18 | // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 19 | // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 20 | // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 21 | // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 22 | // THE SOFTWARE. 23 | 24 | #if os(iOS) || os(tvOS) 25 | import UIKit 26 | #else 27 | import AppKit 28 | #endif 29 | 30 | 31 | public class ConstraintMakerFinalizable { 32 | 33 | internal let description: ConstraintDescription 34 | 35 | internal init(_ description: ConstraintDescription) { 36 | self.description = description 37 | } 38 | 39 | @discardableResult 40 | public func labeled(_ label: String) -> ConstraintMakerFinalizable { 41 | self.description.label = label 42 | return self 43 | } 44 | 45 | public var constraint: Constraint { 46 | return self.description.constraint! 47 | } 48 | 49 | } 50 | -------------------------------------------------------------------------------- /Folder/SwiftQQ/SwiftQQ/Login/LoginSubController.swift: -------------------------------------------------------------------------------- 1 | // 2 | // LoginSubController.swift 3 | // SwiftQQ 4 | // 5 | // Created by Alexcai on 2018/2/17. 6 | // Copyright © 2018年 Alexcai. All rights reserved. 7 | // 8 | 9 | import Cocoa 10 | 11 | class LoginSubController: NSViewController { 12 | @IBOutlet weak var autoLoginButton: HoverButton! // 自动登录按钮 13 | @IBOutlet weak var remenberButton: HoverButton! // 记住密码按钮 14 | var isRemSelected = false // 记录记住密码是否选中 15 | var isAutoSelected = false // 记录自动登录是否选中 16 | 17 | override func viewDidLoad() { 18 | super.viewDidLoad() 19 | // Do view setup here. 20 | autoLoginButton.addHover(normalImageName: "cell_checkbox_normal", hoverImageName: "cell_checkbox_hover") 21 | remenberButton.addHover(normalImageName: "cell_checkbox_normal", hoverImageName: "cell_checkbox_hover") 22 | } 23 | 24 | // 点击记住密码按钮事件 25 | @IBAction func clickRember(_ sender: HoverButton) { 26 | isRemSelected = !isRemSelected 27 | let imgName = isRemSelected ? NSImage.Name("cell_checkbox_checked") : NSImage.Name("cell_checkbox_normal") 28 | remenberButton.image = NSImage(named: imgName) 29 | 30 | if isRemSelected { 31 | remenberButton.updateNormalImageName(name: "cell_checkbox_checked") 32 | }else{ 33 | remenberButton.updateNormalImageName(name: "cell_checkbox_hover") 34 | } 35 | 36 | } 37 | // 点击自动登录按钮事件 38 | @IBAction func clickAuto(_ sender: HoverButton) { 39 | isAutoSelected = !isAutoSelected 40 | let imgName = isAutoSelected ? NSImage.Name("cell_checkbox_checked") : NSImage.Name("cell_checkbox_normal") 41 | autoLoginButton.image = NSImage(named: imgName) 42 | if isAutoSelected { 43 | autoLoginButton.updateNormalImageName(name: "cell_checkbox_checked") 44 | }else{ 45 | autoLoginButton.updateNormalImageName(name: "cell_checkbox_hover") 46 | } 47 | } 48 | } 49 | -------------------------------------------------------------------------------- /Folder/SimuLooker/SimuLooker/ToolKit/SimuPath.swift: -------------------------------------------------------------------------------- 1 | // 2 | // SimuPath.swift 3 | // SimuLooker 4 | // 5 | // Created by caijinzhu on 2018/2/27. 6 | // Copyright © 2018年 alexiuce.github.io. All rights reserved. 7 | // 8 | 9 | import Foundation 10 | 11 | 12 | struct SimuPath { 13 | 14 | /* library URL */ 15 | static var library : URL{ 16 | let path = NSSearchPathForDirectoriesInDomains(FileManager.SearchPathDirectory.libraryDirectory, FileManager.SearchPathDomainMask.userDomainMask, true).first ?? "" 17 | return URL(fileURLWithPath: path) 18 | } 19 | 20 | /* 入口url */ 21 | static var entryPath : URL{ 22 | return library.appendingPathComponent("Developer/CoreSimulator/Devices") 23 | } 24 | 25 | /** 26 | * 获取设备路径的url 27 | * Parameter udid: 设备的id 28 | */ 29 | static func devicePath(udid: String) -> URL{ 30 | return entryPath.appendingPathComponent("\(udid)") 31 | } 32 | /** application url */ 33 | static func applicationPath(udid: String) -> URL{ 34 | return devicePath(udid:udid).appendingPathComponent("data/Containers/Data/Application") 35 | } 36 | /* 设备中的application url */ 37 | static func applicationInDevicePath(udid: String) -> URL{ 38 | return devicePath(udid:udid).appendingPathComponent("data/Containers/Bundle/Application") 39 | } 40 | 41 | 42 | 43 | static func applicationContainerPlistPath(_ path: URL) -> URL{ 44 | return path.appendingPathComponent(".com.apple.mobile_container_manager.metadata.plist") 45 | } 46 | 47 | 48 | /* 获取url下的所有文件夹 */ 49 | static func allDirector(_ path: URL) ->[String] { 50 | let result = try? FileManager.default.contentsOfDirectory(atPath: path.path).filter({ (p) -> Bool in 51 | return SimuPath.isDirectory(path.appendingPathComponent(p).path) 52 | }) 53 | return result ?? [] 54 | } 55 | 56 | /* 判断是否为目录 */ 57 | static func isDirectory(_ path: String) -> Bool{ 58 | var flag = ObjCBool(false) 59 | FileManager.default.fileExists(atPath: path, isDirectory: &flag) 60 | return flag.boolValue 61 | } 62 | 63 | 64 | } 65 | -------------------------------------------------------------------------------- /Folder/SwiftQQ/SwiftQQ/Message/View/ChatCellView.swift: -------------------------------------------------------------------------------- 1 | // 2 | // ChatCellView.swift 3 | // SwiftQQ 4 | // 5 | // Created by Alexcai on 2018/2/19. 6 | // Copyright © 2018年 Alexcai. All rights reserved. 7 | // 8 | 9 | import Cocoa 10 | 11 | class ChatCellView: NSTableCellView { 12 | 13 | @IBOutlet weak var textLabel: NSTextField! 14 | 15 | @IBOutlet weak var iconImageView: NSImageView! 16 | 17 | 18 | var chatModel : ChatDataModel? { 19 | didSet{ 20 | guard let model = chatModel else { return } 21 | textLabel.stringValue = model.text 22 | iconImageView.image = NSImage(named: NSImage.Name(rawValue: model.headIcon)) 23 | 24 | guard let temp = oldValue else { 25 | updateNewConstraints() 26 | return 27 | 28 | } 29 | if temp.chatType != model.chatType { 30 | updateNewConstraints() 31 | } 32 | 33 | } 34 | } 35 | // 更新控件约束,实现不同的类型的消息,显示不同的布局样式 36 | fileprivate func updateNewConstraints() { 37 | guard let model = chatModel else { return } 38 | if model.chatType == .me { // 我的消息类型 39 | iconImageView.snp.remakeConstraints({ (make) in 40 | make.width.height.equalTo(40) 41 | make.top.equalTo(5) 42 | make.right.equalToSuperview().offset(-15) 43 | }) 44 | 45 | textLabel.snp.remakeConstraints({ (make) in 46 | make.right.equalTo(iconImageView.snp.left).offset(-10) 47 | make.top.equalTo(iconImageView) 48 | }) 49 | 50 | }else{ // 他人的消息类型 51 | iconImageView.snp.remakeConstraints({ (make) in 52 | make.width.height.equalTo(40) 53 | make.top.equalTo(5) 54 | make.left.equalToSuperview().offset(15) 55 | }) 56 | 57 | textLabel.snp.remakeConstraints({ (make) in 58 | make.left.equalTo(iconImageView.snp.right).offset(10) 59 | make.top.equalTo(iconImageView) 60 | }) 61 | } 62 | } 63 | 64 | } 65 | -------------------------------------------------------------------------------- /Folder/SwiftQQ/SwiftQQ/ThirdLibs/SnapKit/Source/ConstraintRelatableTarget.swift: -------------------------------------------------------------------------------- 1 | // 2 | // SnapKit 3 | // 4 | // Copyright (c) 2011-Present SnapKit Team - https://github.com/SnapKit 5 | // 6 | // Permission is hereby granted, free of charge, to any person obtaining a copy 7 | // of this software and associated documentation files (the "Software"), to deal 8 | // in the Software without restriction, including without limitation the rights 9 | // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 10 | // copies of the Software, and to permit persons to whom the Software is 11 | // furnished to do so, subject to the following conditions: 12 | // 13 | // The above copyright notice and this permission notice shall be included in 14 | // all copies or substantial portions of the Software. 15 | // 16 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 17 | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 18 | // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 19 | // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 20 | // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 21 | // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 22 | // THE SOFTWARE. 23 | 24 | #if os(iOS) || os(tvOS) 25 | import UIKit 26 | #else 27 | import AppKit 28 | #endif 29 | 30 | 31 | public protocol ConstraintRelatableTarget { 32 | } 33 | 34 | extension Int: ConstraintRelatableTarget { 35 | } 36 | 37 | extension UInt: ConstraintRelatableTarget { 38 | } 39 | 40 | extension Float: ConstraintRelatableTarget { 41 | } 42 | 43 | extension Double: ConstraintRelatableTarget { 44 | } 45 | 46 | extension CGFloat: ConstraintRelatableTarget { 47 | } 48 | 49 | extension CGSize: ConstraintRelatableTarget { 50 | } 51 | 52 | extension CGPoint: ConstraintRelatableTarget { 53 | } 54 | 55 | extension ConstraintInsets: ConstraintRelatableTarget { 56 | } 57 | 58 | extension ConstraintItem: ConstraintRelatableTarget { 59 | } 60 | 61 | extension ConstraintView: ConstraintRelatableTarget { 62 | } 63 | 64 | @available(iOS 9.0, OSX 10.11, *) 65 | extension ConstraintLayoutGuide: ConstraintRelatableTarget { 66 | } 67 | -------------------------------------------------------------------------------- /Folder/SwiftQQ/SwiftQQ/ThirdLibs/SnapKit/Source/LayoutConstraint.swift: -------------------------------------------------------------------------------- 1 | // 2 | // SnapKit 3 | // 4 | // Copyright (c) 2011-Present SnapKit Team - https://github.com/SnapKit 5 | // 6 | // Permission is hereby granted, free of charge, to any person obtaining a copy 7 | // of this software and associated documentation files (the "Software"), to deal 8 | // in the Software without restriction, including without limitation the rights 9 | // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 10 | // copies of the Software, and to permit persons to whom the Software is 11 | // furnished to do so, subject to the following conditions: 12 | // 13 | // The above copyright notice and this permission notice shall be included in 14 | // all copies or substantial portions of the Software. 15 | // 16 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 17 | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 18 | // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 19 | // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 20 | // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 21 | // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 22 | // THE SOFTWARE. 23 | 24 | #if os(iOS) || os(tvOS) 25 | import UIKit 26 | #else 27 | import AppKit 28 | #endif 29 | 30 | 31 | public class LayoutConstraint : NSLayoutConstraint { 32 | 33 | public var label: String? { 34 | get { 35 | return self.identifier 36 | } 37 | set { 38 | self.identifier = newValue 39 | } 40 | } 41 | 42 | internal weak var constraint: Constraint? = nil 43 | 44 | } 45 | 46 | internal func ==(lhs: LayoutConstraint, rhs: LayoutConstraint) -> Bool { 47 | guard lhs.firstItem === rhs.firstItem && 48 | lhs.secondItem === rhs.secondItem && 49 | lhs.firstAttribute == rhs.firstAttribute && 50 | lhs.secondAttribute == rhs.secondAttribute && 51 | lhs.relation == rhs.relation && 52 | lhs.priority == rhs.priority && 53 | lhs.multiplier == rhs.multiplier else { 54 | return false 55 | } 56 | return true 57 | } 58 | -------------------------------------------------------------------------------- /Folder/SwiftQQ/SwiftQQ/ThirdLibs/SnapKit/Source/ConstraintLayoutSupportDSL.swift: -------------------------------------------------------------------------------- 1 | // 2 | // SnapKit 3 | // 4 | // Copyright (c) 2011-Present SnapKit Team - https://github.com/SnapKit 5 | // 6 | // Permission is hereby granted, free of charge, to any person obtaining a copy 7 | // of this software and associated documentation files (the "Software"), to deal 8 | // in the Software without restriction, including without limitation the rights 9 | // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 10 | // copies of the Software, and to permit persons to whom the Software is 11 | // furnished to do so, subject to the following conditions: 12 | // 13 | // The above copyright notice and this permission notice shall be included in 14 | // all copies or substantial portions of the Software. 15 | // 16 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 17 | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 18 | // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 19 | // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 20 | // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 21 | // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 22 | // THE SOFTWARE. 23 | 24 | #if os(iOS) || os(tvOS) 25 | import UIKit 26 | #else 27 | import AppKit 28 | #endif 29 | 30 | 31 | @available(iOS 8.0, *) 32 | public struct ConstraintLayoutSupportDSL: ConstraintDSL { 33 | 34 | public var target: AnyObject? { 35 | return self.support 36 | } 37 | 38 | internal let support: ConstraintLayoutSupport 39 | 40 | internal init(support: ConstraintLayoutSupport) { 41 | self.support = support 42 | 43 | } 44 | 45 | public var top: ConstraintItem { 46 | return ConstraintItem(target: self.target, attributes: ConstraintAttributes.top) 47 | } 48 | 49 | public var bottom: ConstraintItem { 50 | return ConstraintItem(target: self.target, attributes: ConstraintAttributes.bottom) 51 | } 52 | 53 | public var height: ConstraintItem { 54 | return ConstraintItem(target: self.target, attributes: ConstraintAttributes.height) 55 | } 56 | } 57 | -------------------------------------------------------------------------------- /Folder/SimulatorFinder/SimulatorFinder/Model/Device.swift: -------------------------------------------------------------------------------- 1 | // 2 | // Device.swift 3 | // SimulatorFinder 4 | // 5 | // Created by Alexcai on 2018/2/28. 6 | // Copyright © 2018年 Alexcai. All rights reserved. 7 | // 8 | 9 | import Foundation 10 | 11 | import SwiftyJSON 12 | 13 | class Device { 14 | // 属性 15 | var udid = "" 16 | var state = "" // Booted : 已启动 Booting // 在启动中 // shutdown: 未启动 17 | var availability = "" 18 | var name = "" 19 | var os : OS 20 | 21 | var installApps = [App]() // 记录设备中安装的所有app信息 22 | 23 | init(_ device_os: OS, json:JSON ) { 24 | udid = json["udid"].stringValue 25 | state = json["state"].stringValue 26 | availability = json["availability"].stringValue 27 | name = json["name"].stringValue 28 | os = device_os 29 | installApps = loadAllApplication(udid) 30 | } 31 | 32 | 33 | fileprivate func loadAllApplication(_ udid: String) -> [App]{ 34 | // 获取模拟器设备中安装application的路径信息 35 | let appPath = PathManager.applicationInDevice(udid) 36 | // 获取application路径下的所有子路径(也就是每个app的路径) 37 | let allAppInfo = PathManager.allSubDirectoryInPath(appPath) 38 | return allAppInfo.map({ (appContext) -> App in 39 | let application = App() 40 | application.appPath = appPath.appendingPathComponent(appContext) 41 | 42 | // 设置app的document路径 43 | let appDocumentPath = PathManager.applicationDocumentURL(udid) 44 | PathManager.allSubDirectoryInPath(appDocumentPath).forEach({ (randomString) in 45 | let plistUrl = appDocumentPath.appendingPathComponent(randomString).appendingPathComponent(".com.apple.mobile_container_manager.metadata.plist") 46 | 47 | guard let plistDict = NSDictionary(contentsOf: plistUrl) else{return} 48 | guard let targetAppBunldeID = plistDict["MCMMetadataIdentifier"] as? String else{return} 49 | if application.bid == targetAppBunldeID { 50 | application.appDocumentPath = appDocumentPath.appendingPathComponent(randomString) 51 | } 52 | 53 | }) 54 | return application 55 | }) 56 | } 57 | 58 | } 59 | --------------------------------------------------------------------------------