├── .gitignore
├── .swiftpm
└── xcode
│ └── package.xcworkspace
│ └── contents.xcworkspacedata
├── Example
├── JKSwiftExtension.xcodeproj
│ ├── project.pbxproj
│ ├── project.xcworkspace
│ │ ├── contents.xcworkspacedata
│ │ └── xcshareddata
│ │ │ └── IDEWorkspaceChecks.plist
│ └── xcshareddata
│ │ └── xcschemes
│ │ └── JKSwiftExtension-Example.xcscheme
├── JKSwiftExtension.xcworkspace
│ ├── contents.xcworkspacedata
│ └── xcshareddata
│ │ └── IDEWorkspaceChecks.plist
├── JKSwiftExtension
│ ├── AppDelegate.swift
│ ├── Base.lproj
│ │ ├── LaunchScreen.xib
│ │ └── Main.storyboard
│ ├── CashCow.bundle
│ │ ├── GuideX_1.png
│ │ ├── GuideX_2.png
│ │ └── GuideX_3.png
│ ├── Class
│ │ ├── Base
│ │ │ ├── BaseHeaderView.swift
│ │ │ ├── BaseNavigationViewController.swift
│ │ │ ├── BaseViewCell.swift
│ │ │ └── BaseViewController.swift
│ │ ├── FoundationExtensionViewController
│ │ │ ├── Controller
│ │ │ │ ├── AVAssetExportSessionExtensionViewController.swift
│ │ │ │ ├── ArrayExtensionViewController.swift
│ │ │ │ ├── BoolExtensionViewController.swift
│ │ │ │ ├── BundleExtensionViewController.swift
│ │ │ │ ├── CGFloatExtensionViewController.swift
│ │ │ │ ├── CGPointExtensionViewController.swift
│ │ │ │ ├── CLLocationExtensionViewController.swift
│ │ │ │ ├── CharacterExtensionViewController.swift
│ │ │ │ ├── DataExtensionViewController.swift
│ │ │ │ ├── DateExtensionViewController.swift
│ │ │ │ ├── DateFormatterExtensionViewController.swift
│ │ │ │ ├── DictionaryExtensionViewController.swift
│ │ │ │ ├── DispatchQueueExtensionViewController.swift
│ │ │ │ ├── DoubleExtensionViewController.swift
│ │ │ │ ├── FileManagerExtensionViewController.swift
│ │ │ │ ├── FloatExtensionViewController.swift
│ │ │ │ ├── FoundationExtensionViewController.swift
│ │ │ │ ├── IndexPathExtensionViewController.swift
│ │ │ │ ├── Int64ExtensionViewController.swift
│ │ │ │ ├── IntExtensionViewController.swift
│ │ │ │ ├── NSAttributedStringExtensionViewController.swift
│ │ │ │ ├── NSDecimalNumberExtensionViewController.swift
│ │ │ │ ├── NSDecimalNumberHandlerExtensionViewController.swift
│ │ │ │ ├── NSIndexPathExtensionViewController.swift
│ │ │ │ ├── NSMutableAttributedStringExtensionViewController.swift
│ │ │ │ ├── NSObjectExtensionViewController.swift
│ │ │ │ ├── NSRangeExtensionViewController.swift
│ │ │ │ ├── NumberFormatterExtensionViewController.swift
│ │ │ │ ├── RangeExtensionViewController.swift
│ │ │ │ ├── StringExtensionViewController.swift
│ │ │ │ ├── TimerExtensionViewController.swift
│ │ │ │ ├── UIDeviceExtensionViewController.swift
│ │ │ │ ├── UIFontExtensionViewController.swift
│ │ │ │ ├── UIntExtensionViewController.swift
│ │ │ │ ├── URLExtensionViewController.swift
│ │ │ │ └── UserDefaultsExtensionViewController.swift
│ │ │ └── Model
│ │ │ │ └── UserDefaultsModel.swift
│ │ ├── ProtocolViewController
│ │ │ ├── Controller
│ │ │ │ ├── JKEmitterableViewController.swift
│ │ │ │ ├── JKJSONViewController.swift
│ │ │ │ ├── NibLoadableViewController.swift
│ │ │ │ ├── OptionalViewController.swift
│ │ │ │ └── ProtocolViewController.swift
│ │ │ └── View
│ │ │ │ ├── TestView.swift
│ │ │ │ └── TestView.xib
│ │ ├── SmallToolsViewController
│ │ │ ├── Controller
│ │ │ │ ├── JKAlertViewControllerViewController.swift
│ │ │ │ ├── JKAsyncsViewController.swift
│ │ │ │ ├── JKCircleProgressViewViewController.swift
│ │ │ │ ├── JKCommonToolViewController.swift
│ │ │ │ ├── JKContentSizeViewController.swift
│ │ │ │ ├── JKCustomPickViewViewController.swift
│ │ │ │ ├── JKDarkModeUtilViewController.swift
│ │ │ │ ├── JKDrawSignatureViewViewController.swift
│ │ │ │ ├── JKFileLogViewController.swift
│ │ │ │ ├── JKGlobalToolsViewController.swift
│ │ │ │ ├── JKOperatorViewController.swift
│ │ │ │ ├── JKPaddingLabelViewController.swift
│ │ │ │ ├── JKPanViewViewController.swift
│ │ │ │ ├── JKPhotoAlbumUtilViewController.swift
│ │ │ │ ├── JKPlaceHolderTextViewViewController.swift
│ │ │ │ ├── JKPrintViewController.swift
│ │ │ │ ├── JKRegexHelperViewController.swift
│ │ │ │ ├── JKRollingNoticeViewViewController.swift
│ │ │ │ ├── JKRuntimeViewController.swift
│ │ │ │ ├── JKScreenShieldViewViewController.swift
│ │ │ │ ├── JKScrollviewCardLayoutViewController.swift
│ │ │ │ ├── JKTapActionLabelViewController.swift
│ │ │ │ ├── JKTaskManagerViewController.swift
│ │ │ │ ├── JKUnitConverterViewController.swift
│ │ │ │ ├── JKWaterFallLayoutViewController.swift
│ │ │ │ ├── JKWeakTimerViewController.swift
│ │ │ │ ├── KeyboardAccessoryViewController.swift
│ │ │ │ ├── QRCodeImageFactoryViewController.swift
│ │ │ │ └── SmallToolsViewController.swift
│ │ │ ├── Model
│ │ │ │ ├── Person.swift
│ │ │ │ └── SoundModel.swift
│ │ │ └── View
│ │ │ │ ├── DarkModeHeadView.swift
│ │ │ │ ├── DarkModePickerView.swift
│ │ │ │ ├── DescriptionCustomViewCell.swift
│ │ │ │ ├── JKEmptyView.swift
│ │ │ │ ├── JKPanViewCell.swift
│ │ │ │ ├── JKPanViewChildView.swift
│ │ │ │ ├── JKPanViewCustomView.swift
│ │ │ │ ├── JKRollingNoticeViewCell1.swift
│ │ │ │ ├── JKRollingNoticeViewCell2.swift
│ │ │ │ ├── JKRollingNoticeViewCell2.xib
│ │ │ │ ├── JKSoundPickView.swift
│ │ │ │ ├── JKTeamRideShareLongImageCollectionViewCell.swift
│ │ │ │ ├── JKTeamRideShareShortImageCollectionViewCell.swift
│ │ │ │ └── SettingCustomViewCell.swift
│ │ └── UIKitExtensionViewController
│ │ │ ├── Controller
│ │ │ ├── CAGradientLayerExtensionViewController.swift
│ │ │ ├── CALayerExtensionViewController.swift
│ │ │ ├── CATextLayerExtensionViewController.swift
│ │ │ ├── UIAlertControllerExtensionViewController.swift
│ │ │ ├── UIApplicationExtensionViewController.swift
│ │ │ ├── UIBarButtonItemExtensionViewController.swift
│ │ │ ├── UIBezierPathExtensionViewController.swift
│ │ │ ├── UIButtonExtensionViewController.swift
│ │ │ ├── UICollectionViewExtensionViewController.swift
│ │ │ ├── UIColorExtensionViewController.swift
│ │ │ ├── UIControlExtensionViewController.swift
│ │ │ ├── UIImageExtensionViewController.swift
│ │ │ ├── UIImageViewExtensionViewController.swift
│ │ │ ├── UIKitExtensionViewController.swift
│ │ │ ├── UILabelExtensionViewController.swift
│ │ │ ├── UINavigationBarExtensionViewController.swift
│ │ │ ├── UINavigationControllerExtensionViewController.swift
│ │ │ ├── UIScreenExtensionViewController.swift
│ │ │ ├── UIScrollViewExtensionViewController.swift
│ │ │ ├── UISliderExtensionViewController.swift
│ │ │ ├── UIStackViewExtensionViewController.swift
│ │ │ ├── UISwitchExtensionViewController.swift
│ │ │ ├── UITabBarControllerExtensionViewController.swift
│ │ │ ├── UITabbarExtensionViewController.swift
│ │ │ ├── UITableViewCellExtensionViewController.swift
│ │ │ ├── UITableViewExtensionViewController.swift
│ │ │ ├── UITextFieldExtensionViewController.swift
│ │ │ ├── UITextViewExtensionViewController.swift
│ │ │ ├── UIViewControllerExtensionViewController.swift
│ │ │ ├── UIViewExtensionViewController.swift
│ │ │ ├── UIVisualEffectViewExtensionViewController.swift
│ │ │ └── WKWebViewExtensionViewController.swift
│ │ │ └── View
│ │ │ └── ConrnersTableViewCell.swift
│ ├── English.lproj
│ │ └── Localizable.strings
│ ├── GuideX_2.png
│ ├── Images.xcassets
│ │ ├── AppIcon.appiconset
│ │ │ └── Contents.json
│ │ ├── Contents.json
│ │ ├── Frame 676.imageset
│ │ │ ├── Contents.json
│ │ │ └── Frame 676@2x.png
│ │ ├── Triangle.imageset
│ │ │ ├── Contents.json
│ │ │ ├── Triangle@2x.png
│ │ │ └── Triangle@3x.png
│ │ ├── bg.imageset
│ │ │ ├── Contents.json
│ │ │ └── bg.png
│ │ ├── campass_light.imageset
│ │ │ ├── Contents.json
│ │ │ ├── campass_light@2x.png
│ │ │ └── campass_light@3x.png
│ │ ├── cell_drag.imageset
│ │ │ ├── Contents.json
│ │ │ ├── cell_drag@2x.png
│ │ │ └── cell_drag@3x.png
│ │ ├── dashline_left_dark.imageset
│ │ │ ├── Contents.json
│ │ │ ├── dashline_left_dark@2x.png
│ │ │ └── dashline_left_dark@3x.png
│ │ ├── dashline_left_light.imageset
│ │ │ ├── Contents.json
│ │ │ ├── dashline_left_light@2x.png
│ │ │ └── dashline_left_light@3x.png
│ │ ├── dashline_middle_dark.imageset
│ │ │ ├── Contents.json
│ │ │ ├── dashline_middle_dark@2x.png
│ │ │ └── dashline_middle_dark@3x.png
│ │ ├── dashline_middle_light.imageset
│ │ │ ├── Contents.json
│ │ │ ├── dashline_middle_light@2x.png
│ │ │ └── dashline_middle_light@3x.png
│ │ ├── dashline_right_dark.imageset
│ │ │ ├── Contents.json
│ │ │ ├── dashline_right_dark@2x.png
│ │ │ └── dashline_right_dark@3x.png
│ │ ├── dashline_right_light.imageset
│ │ │ ├── Contents.json
│ │ │ ├── dashline_right_light@2x.png
│ │ │ └── dashline_right_light@3x.png
│ │ ├── detect_qr.imageset
│ │ │ ├── Contents.json
│ │ │ └── detect_qr.png
│ │ ├── drag_delete.imageset
│ │ │ ├── Contents.json
│ │ │ ├── drag_delete@2x.png
│ │ │ └── drag_delete@3x.png
│ │ ├── empty_icon.imageset
│ │ │ ├── Contents.json
│ │ │ ├── empty_icon@2x.png
│ │ │ └── empty_icon@3x.png
│ │ ├── favorite_delete.imageset
│ │ │ ├── Contents.json
│ │ │ ├── favorite_delete@2x.png
│ │ │ └── favorite_delete@3x.png
│ │ ├── flower.imageset
│ │ │ ├── Contents.json
│ │ │ └── flower.png
│ │ ├── flower2.imageset
│ │ │ ├── Contents.json
│ │ │ └── flower2.png
│ │ ├── go_favorite_selected.imageset
│ │ │ ├── Contents.json
│ │ │ ├── go_favorite_selected@2x.png
│ │ │ └── go_favorite_selected@3x.png
│ │ ├── good.imageset
│ │ │ ├── Contents.json
│ │ │ ├── good@2x.png
│ │ │ └── good@3x.png
│ │ ├── good1.imageset
│ │ │ ├── Contents.json
│ │ │ ├── good1@2x.png
│ │ │ └── good1@3x.png
│ │ ├── good2.imageset
│ │ │ ├── Contents.json
│ │ │ ├── good2@2x.png
│ │ │ └── good2@3x.png
│ │ ├── good3.imageset
│ │ │ ├── Contents.json
│ │ │ ├── good3@2x.png
│ │ │ └── good3@3x.png
│ │ ├── good5.imageset
│ │ │ ├── Contents.json
│ │ │ └── good5@2x.png
│ │ ├── good6.imageset
│ │ │ ├── Contents.json
│ │ │ └── good6@2x.png
│ │ ├── good7.imageset
│ │ │ ├── Contents.json
│ │ │ └── good7@2x.png
│ │ ├── good8.imageset
│ │ │ ├── Contents.json
│ │ │ └── good8@2x.png
│ │ ├── good9.imageset
│ │ │ ├── Contents.json
│ │ │ └── good9@2x.png
│ │ ├── huaban.imageset
│ │ │ ├── Contents.json
│ │ │ └── huaban.png
│ │ ├── ironman.imageset
│ │ │ ├── Contents.json
│ │ │ └── ironman.png
│ │ ├── large.imageset
│ │ │ ├── Contents.json
│ │ │ └── large.png
│ │ ├── mark.imageset
│ │ │ ├── Contents.json
│ │ │ ├── mark@2x.png
│ │ │ └── mark@3x.png
│ │ ├── mark_highlighted.imageset
│ │ │ ├── Contents.json
│ │ │ ├── mark_highlighted@2x.png
│ │ │ └── mark_highlighted@3x.png
│ │ ├── network_error.imageset
│ │ │ ├── Contents.json
│ │ │ ├── network_error@2x.png
│ │ │ └── network_error@3x.png
│ │ ├── pika3.dataset
│ │ │ ├── Contents.json
│ │ │ └── pika3.gif
│ │ ├── qr_test.imageset
│ │ │ ├── Contents.json
│ │ │ └── qr_test.png
│ │ ├── rank_up.imageset
│ │ │ ├── Contents.json
│ │ │ ├── rank_up@2x.png
│ │ │ └── rank_up@3x.png
│ │ ├── refresh.imageset
│ │ │ ├── Contents.json
│ │ │ ├── refresh@2x.png
│ │ │ └── refresh@3x.png
│ │ ├── screen_no_content.imageset
│ │ │ ├── Contents.json
│ │ │ ├── screen_no_content@2x.png
│ │ │ └── screen_no_content@3x.png
│ │ ├── screen_no_network.imageset
│ │ │ ├── Contents.json
│ │ │ ├── screen_no_network@2x.png
│ │ │ └── screen_no_network@3x.png
│ │ ├── selected_point_animation.imageset
│ │ │ ├── Contents.json
│ │ │ ├── selected_point_animation@2x.png
│ │ │ └── selected_point_animation@3x.png
│ │ ├── selected_point_circle.imageset
│ │ │ ├── Contents.json
│ │ │ ├── selected_point_circle@2x.png
│ │ │ └── selected_point_circle@3x.png
│ │ ├── sender.imageset
│ │ │ ├── Contents.json
│ │ │ ├── sender@2x.png
│ │ │ └── sender@3x.png
│ │ ├── tabbar_item_home.imageset
│ │ │ ├── Contents.json
│ │ │ ├── tabbar_item_home@2x-1.png
│ │ │ ├── tabbar_item_home@2x.png
│ │ │ ├── tabbar_item_home@3x-1.png
│ │ │ └── tabbar_item_home@3x.png
│ │ ├── tabbar_profile.imageset
│ │ │ ├── Contents.json
│ │ │ ├── tabbar_profile@2x.png
│ │ │ └── tabbar_profile@3x.png
│ │ ├── tabbar_profile_selected.imageset
│ │ │ ├── Contents.json
│ │ │ ├── tabbar_profile_selected@2x.png
│ │ │ └── tabbar_profile_selected@3x.png
│ │ ├── testicon.imageset
│ │ │ ├── Contents.json
│ │ │ └── testicon.png
│ │ ├── tfboy.imageset
│ │ │ ├── Contents.json
│ │ │ └── tfboy.png
│ │ ├── trade_validperiod.imageset
│ │ │ ├── Contents.json
│ │ │ ├── trade_validperiod@2x.png
│ │ │ └── trade_validperiod@3x.png
│ │ ├── trade_validperiod_selected.imageset
│ │ │ ├── Contents.json
│ │ │ ├── trade_validperiod_selected@2x.png
│ │ │ └── trade_validperiod_selected@3x.png
│ │ ├── yy.imageset
│ │ │ ├── Contents.json
│ │ │ └── yy.png
│ │ └── 特殊配置
│ │ │ ├── Contents.json
│ │ │ ├── special_configuration_off.imageset
│ │ │ ├── Contents.json
│ │ │ ├── special_configuration_off@2x.png
│ │ │ └── special_configuration_off@3x.png
│ │ │ ├── special_configuration_off_selected.imageset
│ │ │ ├── Contents.json
│ │ │ ├── special_configuration_off_selected@2x.png
│ │ │ └── special_configuration_off_selected@3x.png
│ │ │ ├── special_configuration_on.imageset
│ │ │ ├── Contents.json
│ │ │ ├── special_configuration_on@2x.png
│ │ │ └── special_configuration_on@3x.png
│ │ │ └── special_configuration_on_selected.imageset
│ │ │ ├── Contents.json
│ │ │ ├── special_configuration_on_selected@2x.png
│ │ │ └── special_configuration_on_selected@3x.png
│ ├── Info.plist
│ ├── JKBaseKit.bundle
│ │ ├── JKBank.plist
│ │ ├── icon_scan@2x.png
│ │ └── icon_scan@3x.png
│ ├── JKSwiftExtension_Example-Bridging-Header.h
│ ├── Persons.plist
│ ├── PrefixHeader.pch
│ ├── PrivacyInfo.xcprivacy
│ ├── StoryboardTest
│ │ ├── MyStoryboard.storyboard
│ │ ├── MyStoryboard2.storyboard
│ │ └── StoryboardTest1ViewController.swift
│ ├── TestFile
│ │ ├── Controller
│ │ │ ├── BleViewController.swift
│ │ │ ├── DeleteViewController.swift
│ │ │ ├── EightViewController.swift
│ │ │ ├── FBArrowLabel.swift
│ │ │ ├── FBGuidePage.swift
│ │ │ ├── FiveViewController.swift
│ │ │ ├── FourViewController.swift
│ │ │ ├── JKEmptyViewController.swift
│ │ │ ├── JKVVViewController.swift
│ │ │ ├── JKWheelPickerViewController.swift
│ │ │ ├── LanePicViewController.swift
│ │ │ ├── MapKitTestViewController.swift
│ │ │ ├── NineViewController.swift
│ │ │ ├── Notification+Extension.swift
│ │ │ ├── NotificationTetstViewController.h
│ │ │ ├── NotificationTetstViewController.m
│ │ │ ├── OneViewController.swift
│ │ │ ├── PresetntFourViewController.swift
│ │ │ ├── PresetntOneViewController.swift
│ │ │ ├── PresetntThreeViewController.swift
│ │ │ ├── PresetntTwoViewController.swift
│ │ │ ├── ProfileViewController.swift
│ │ │ ├── QRTestViewController.swift
│ │ │ ├── RadiusViewController.swift
│ │ │ ├── RateLimitViewController.swift
│ │ │ ├── SegmentViewController.swift
│ │ │ ├── SixViewController.swift
│ │ │ ├── SpeechViewController.swift
│ │ │ ├── TenViewController.swift
│ │ │ ├── TestFileViewController.swift
│ │ │ ├── TestViewController.swift
│ │ │ ├── ThreeViewController.swift
│ │ │ ├── TouchViewController.swift
│ │ │ ├── TwoViewController.swift
│ │ │ └── UIBezierPathViewController.swift
│ │ ├── Extension
│ │ │ ├── Image+Photo.swift
│ │ │ └── UIApplication+Photo.swift
│ │ ├── FiveViewController.swift
│ │ ├── FourViewController.swift
│ │ ├── Notification+Extension.swift
│ │ ├── Tools
│ │ │ └── JKPhotoAlbumUtil.swift
│ │ └── View
│ │ │ ├── AnimationView.swift
│ │ │ ├── DeleteViewCell.swift
│ │ │ ├── DrivingSpecialConfigurationSegmentView.swift
│ │ │ ├── FBArrowTestLabel.swift
│ │ │ ├── JKTouchView.swift
│ │ │ ├── JKWheelPicker
│ │ │ ├── JKWheelPicker.swift
│ │ │ ├── JKWheelPickerCell.swift
│ │ │ └── JKWheelPickerCollectionViewLayout.swift
│ │ │ ├── LaneBackInfoAndTurnIconView.swift
│ │ │ ├── RadiusViewCell.swift
│ │ │ ├── SliderDashLineView.swift
│ │ │ ├── TGSLoginAgreeView.swift
│ │ │ └── UIAlertController+Extension1.swift
│ ├── ViewController.swift
│ ├── baby.gif
│ ├── en.lproj
│ │ └── Localizable.strings
│ ├── font
│ │ ├── din-2014_bold-italic.ttf
│ │ ├── fanghei.ttf
│ │ └── niu1.ttf
│ ├── girl.jpg
│ ├── herf.html
│ ├── huaban1.png
│ ├── mebubble@2x.png
│ ├── pika2.gif
│ ├── testFile.text
│ ├── testicon.png
│ ├── yoububble@2x.png
│ └── zh-Hans.lproj
│ │ ├── LaunchScreen.strings
│ │ ├── Localizable.strings
│ │ └── Main.strings
├── Podfile
├── Podfile.lock
├── Pods
│ ├── Local Podspecs
│ │ └── JKSwiftExtension.podspec.json
│ ├── Manifest.lock
│ ├── Pods.xcodeproj
│ │ └── project.pbxproj
│ ├── SnapKit
│ │ ├── LICENSE
│ │ ├── README.md
│ │ └── Sources
│ │ │ ├── Constraint.swift
│ │ │ ├── ConstraintAttributes.swift
│ │ │ ├── ConstraintConfig.swift
│ │ │ ├── ConstraintConstantTarget.swift
│ │ │ ├── ConstraintDSL.swift
│ │ │ ├── ConstraintDescription.swift
│ │ │ ├── ConstraintDirectionalInsetTarget.swift
│ │ │ ├── ConstraintDirectionalInsets.swift
│ │ │ ├── ConstraintInsetTarget.swift
│ │ │ ├── ConstraintInsets.swift
│ │ │ ├── ConstraintItem.swift
│ │ │ ├── ConstraintLayoutGuide+Extensions.swift
│ │ │ ├── ConstraintLayoutGuide.swift
│ │ │ ├── ConstraintLayoutGuideDSL.swift
│ │ │ ├── ConstraintLayoutSupport.swift
│ │ │ ├── ConstraintLayoutSupportDSL.swift
│ │ │ ├── ConstraintMaker.swift
│ │ │ ├── ConstraintMakerEditable.swift
│ │ │ ├── ConstraintMakerExtendable.swift
│ │ │ ├── ConstraintMakerFinalizable.swift
│ │ │ ├── ConstraintMakerPrioritizable.swift
│ │ │ ├── ConstraintMakerRelatable+Extensions.swift
│ │ │ ├── ConstraintMakerRelatable.swift
│ │ │ ├── ConstraintMultiplierTarget.swift
│ │ │ ├── ConstraintOffsetTarget.swift
│ │ │ ├── ConstraintPriority.swift
│ │ │ ├── ConstraintPriorityTarget.swift
│ │ │ ├── ConstraintRelatableTarget.swift
│ │ │ ├── ConstraintRelation.swift
│ │ │ ├── ConstraintView+Extensions.swift
│ │ │ ├── ConstraintView.swift
│ │ │ ├── ConstraintViewDSL.swift
│ │ │ ├── Debugging.swift
│ │ │ ├── LayoutConstraint.swift
│ │ │ ├── LayoutConstraintItem.swift
│ │ │ ├── Typealiases.swift
│ │ │ └── UILayoutSupport+Extensions.swift
│ └── Target Support Files
│ │ ├── JKSwiftExtension
│ │ ├── JKSwiftExtension-Info.plist
│ │ ├── JKSwiftExtension-dummy.m
│ │ ├── JKSwiftExtension-prefix.pch
│ │ ├── JKSwiftExtension-umbrella.h
│ │ ├── JKSwiftExtension.debug.xcconfig
│ │ ├── JKSwiftExtension.modulemap
│ │ ├── JKSwiftExtension.release.xcconfig
│ │ └── ResourceBundle-JKSwiftExtension-JKSwiftExtension-Info.plist
│ │ ├── Pods-JKSwiftExtension_Example
│ │ ├── Pods-JKSwiftExtension_Example-Info.plist
│ │ ├── Pods-JKSwiftExtension_Example-acknowledgements.markdown
│ │ ├── Pods-JKSwiftExtension_Example-acknowledgements.plist
│ │ ├── Pods-JKSwiftExtension_Example-dummy.m
│ │ ├── Pods-JKSwiftExtension_Example-frameworks-Debug-input-files.xcfilelist
│ │ ├── Pods-JKSwiftExtension_Example-frameworks-Debug-output-files.xcfilelist
│ │ ├── Pods-JKSwiftExtension_Example-frameworks-Release-input-files.xcfilelist
│ │ ├── Pods-JKSwiftExtension_Example-frameworks-Release-output-files.xcfilelist
│ │ ├── Pods-JKSwiftExtension_Example-frameworks.sh
│ │ ├── Pods-JKSwiftExtension_Example-umbrella.h
│ │ ├── Pods-JKSwiftExtension_Example.debug.xcconfig
│ │ ├── Pods-JKSwiftExtension_Example.modulemap
│ │ └── Pods-JKSwiftExtension_Example.release.xcconfig
│ │ └── SnapKit
│ │ ├── SnapKit-Info.plist
│ │ ├── SnapKit-dummy.m
│ │ ├── SnapKit-prefix.pch
│ │ ├── SnapKit-umbrella.h
│ │ ├── SnapKit.debug.xcconfig
│ │ ├── SnapKit.modulemap
│ │ └── SnapKit.release.xcconfig
└── Tests
│ ├── Info.plist
│ ├── StringTest.swift
│ └── Tests.swift
├── JKSwiftExtension.podspec
├── LICENSE
├── OtherEvent
├── JKContactsKit.swift
├── JKContactsKitViewController.swift
├── JKEKEvent.swift
├── JKEKEventViewController.swift
├── JKThirdPartyAppType.swift
└── 通讯录和日历事件感兴趣的可以看看
├── Package.swift
├── README.md
├── Sources
├── Assets
│ ├── .gitkeep
│ └── ironman.png
└── Classes
│ ├── .gitkeep
│ ├── FoundationExtension
│ ├── AVAssetExportSession+Extension.swift
│ ├── Array+Extension.swift
│ ├── Bool+Extension.swift
│ ├── Bundle+Extension.swift
│ ├── CGFloat+Extension.swift
│ ├── CGPoint+Extension.swift
│ ├── CGRect+Extension.swift
│ ├── CGSize+Extension.swift
│ ├── CLLocation+Extension.swift
│ ├── Character+Extension.swift
│ ├── Data+extension.swift
│ ├── Date+Extension.swift
│ ├── DateFormatter+Extension.swift
│ ├── Dictionary+Extension.swift
│ ├── DispatchQueue+Extension.swift
│ ├── Double+Extension.swift
│ ├── FileManager+Extension.swift
│ ├── Float+Extension.swift
│ ├── IndexPath+Extension.swift
│ ├── Int+Extension.swift
│ ├── Int64+Extension.swift
│ ├── NSAttributedString+Extension.swift
│ ├── NSDecimalNumber+Extension.swift
│ ├── NSDecimalNumberHandler+Extension.swift
│ ├── NSIndexPath+Extension.swift
│ ├── NSMutableAttributedString+Extension.swift
│ ├── NSNumber+Extension.swift
│ ├── NSObject+Extension.swift
│ ├── NSRange+Extension.swift
│ ├── NumberFormatter+Extension.swift
│ ├── Range+Extension.swift
│ ├── String+Extension.swift
│ ├── Timer+Extension.swift
│ ├── UIDevice+Extension.swift
│ ├── UIFont+Extension.swift
│ ├── UInt+Extension.swift
│ ├── URL+Extension.swift
│ └── UserDefaults+Extesnion.swift
│ ├── Protocol
│ ├── JKEmitterable.swift
│ ├── JKJSON.swift
│ ├── JKNibLoadable.swift
│ ├── JKPOP.swift
│ ├── JKPOPExtension
│ │ └── JKPOP+String.swift
│ └── Optional+Extension.swift
│ ├── SmallTools
│ ├── JKAlertViewController.swift
│ ├── JKAsyncs.swift
│ ├── JKCircleProgressView.swift
│ ├── JKClosure.swift
│ ├── JKCommonTool.swift
│ ├── JKContentSize.swift
│ ├── JKCustomPickView.swift
│ ├── JKDarkModeUtil.swift
│ ├── JKDecodeString.swift
│ ├── JKDrawSignatureView.swift
│ ├── JKFileLog.swift
│ ├── JKGlobalTools.swift
│ ├── JKOperator.swift
│ ├── JKPaddingLabel.swift
│ ├── JKPanView.swift
│ ├── JKPastedTextField.swift
│ ├── JKPastedTextView.swift
│ ├── JKPlaceHolderTextView.swift
│ ├── JKPrint.swift
│ ├── JKRegexHelper.swift
│ ├── JKRollingNoticeView.swift
│ ├── JKRuntime.swift
│ ├── JKScreenShieldView.swift
│ ├── JKScrollviewCardLayout.swift
│ ├── JKTapActionLabel.swift
│ ├── JKTaskManager.swift
│ ├── JKThemeProvider.swift
│ ├── JKUnitConverter.swift
│ ├── JKWaterFallLayout.swift
│ ├── JKWeakTimer.swift
│ ├── KeyboardAccessory.swift
│ └── QRCodeImageFactory.swift
│ └── UIKitExtension
│ ├── CAGradientLayer+Extension.swift
│ ├── CALayer+Extension.swift
│ ├── CATextLayer+Extension.swift
│ ├── UIAlertController+Extension.swift
│ ├── UIApplication+Extension.swift
│ ├── UIBarButtonItem+Extension.swift
│ ├── UIBezierPath+Extension.swift
│ ├── UIButton+Extension.swift
│ ├── UICollectionView+Extension.swift
│ ├── UIColor+Extension.swift
│ ├── UIControl+Extension.swift
│ ├── UIGestureRecognizer+Extension.swift
│ ├── UIImage+Extension.swift
│ ├── UIImageView+Extension.swift
│ ├── UILabel+Extension.swift
│ ├── UINavigationBar+Extension.swift
│ ├── UINavigationController+Extension.swift
│ ├── UIPageControl+Extension.swift
│ ├── UIScreen+Extension.swift
│ ├── UIScrollView+Extension.swift
│ ├── UISlider+Extension.swift
│ ├── UIStackView+Extension.swift
│ ├── UISwitch+Extension.swift
│ ├── UITabBar+Extension.swift
│ ├── UITabBarController+Extension.swift
│ ├── UITableView+Extension.swift
│ ├── UITableViewCell+Extension.swift
│ ├── UITapGestureRecognizer+Extension.swift
│ ├── UITextField+Extension.swift
│ ├── UITextView+Extension.swift
│ ├── UIView+Extension.swift
│ ├── UIViewController+Extension.swift
│ ├── UIVisualEffectView+Extension.swift
│ └── WKWebView+Extension.swift
├── Tests
└── JKSwiftExtensionTests
│ └── JKSwiftExtensionTests.swift
└── _Pods.xcodeproj
/.swiftpm/xcode/package.xcworkspace/contents.xcworkspacedata:
--------------------------------------------------------------------------------
1 |
2 |
4 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/Example/JKSwiftExtension.xcodeproj/project.xcworkspace/contents.xcworkspacedata:
--------------------------------------------------------------------------------
1 |
2 |
4 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/Example/JKSwiftExtension.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | IDEDidComputeMac32BitWarning
6 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/Example/JKSwiftExtension.xcworkspace/contents.xcworkspacedata:
--------------------------------------------------------------------------------
1 |
2 |
4 |
6 |
7 |
9 |
10 |
11 |
--------------------------------------------------------------------------------
/Example/JKSwiftExtension.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | IDEDidComputeMac32BitWarning
6 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/Example/JKSwiftExtension/CashCow.bundle/GuideX_1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/JoanKing/JKSwiftExtension/60ed6ddc03b541fe251cb0bbc0cca1fea389a4ac/Example/JKSwiftExtension/CashCow.bundle/GuideX_1.png
--------------------------------------------------------------------------------
/Example/JKSwiftExtension/CashCow.bundle/GuideX_2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/JoanKing/JKSwiftExtension/60ed6ddc03b541fe251cb0bbc0cca1fea389a4ac/Example/JKSwiftExtension/CashCow.bundle/GuideX_2.png
--------------------------------------------------------------------------------
/Example/JKSwiftExtension/CashCow.bundle/GuideX_3.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/JoanKing/JKSwiftExtension/60ed6ddc03b541fe251cb0bbc0cca1fea389a4ac/Example/JKSwiftExtension/CashCow.bundle/GuideX_3.png
--------------------------------------------------------------------------------
/Example/JKSwiftExtension/Class/FoundationExtensionViewController/Controller/BoolExtensionViewController.swift:
--------------------------------------------------------------------------------
1 | //
2 | // BoolExtensionViewController.swift
3 | // JKSwiftExtension_Example
4 | //
5 | // Created by IronMan on 2020/11/3.
6 | // Copyright © 2020 CocoaPods. All rights reserved.
7 | //
8 |
9 | import UIKit
10 |
11 | class BoolExtensionViewController: BaseViewController {
12 |
13 | override func viewDidLoad() {
14 | super.viewDidLoad()
15 |
16 | headDataArray = ["一、基本的扩展"]
17 | dataArray = [["Bool 值转 Int"]]
18 | }
19 | }
20 |
21 | // MARK: - 一、基本的扩展
22 | extension BoolExtensionViewController {
23 |
24 | // MARK: 1.01、Bool 值转 Int
25 | @objc func test101() {
26 | let value: Bool = true
27 | JKPrint("Bool 值转 Int", "\(value) 转 Int 后为 \(value.jk.boolToInt)")
28 | }
29 | }
30 |
--------------------------------------------------------------------------------
/Example/JKSwiftExtension/Class/FoundationExtensionViewController/Controller/CGPointExtensionViewController.swift:
--------------------------------------------------------------------------------
1 | //
2 | // CGPointExtensionViewController.swift
3 | // JKSwiftExtension_Example
4 | //
5 | // Created by 小冲冲 on 2024/1/22.
6 | // Copyright © 2024 CocoaPods. All rights reserved.
7 | //
8 |
9 | import UIKit
10 |
11 | class CGPointExtensionViewController: BaseViewController {
12 | override func viewDidLoad() {
13 | super.viewDidLoad()
14 |
15 | headDataArray = ["一、CGPoint的基本扩展"]
16 | dataArray = [["两个CGPoint进行 - 运算", "计算两个 CGPoint 的中点"]]
17 | }
18 | }
19 |
20 | // MARK: - 一、CGPoint的基本扩展
21 | extension CGPointExtensionViewController {
22 |
23 | // MARK: 1.02、计算两个 CGPoint 的中点
24 | @objc func test102() {
25 | let point1 = CGPoint(x: 20, y: 40)
26 | let point2 = CGPoint(x: 10, y: 90)
27 | JKPrint("点1:\(point1) 点2:\(point2) 之间的中间点是:\(point1.midPoint(by: point2))")
28 | }
29 |
30 | // MARK: 1.01、两个CGPoint进行 - 运算
31 | @objc func test101() {
32 | let point1 = CGPoint(x: 20, y: 40)
33 | let point2 = CGPoint(x: 10, y: 90)
34 | JKPrint("两个CGPoint进行 - 运算:点1:\(point1) 点2:\(point2) 进行 - 运算的结果是:\(point1 - point2)")
35 | }
36 | }
37 |
--------------------------------------------------------------------------------
/Example/JKSwiftExtension/Class/FoundationExtensionViewController/Controller/CharacterExtensionViewController.swift:
--------------------------------------------------------------------------------
1 | //
2 | // CharacterExtensionViewController.swift
3 | // JKSwiftExtension_Example
4 | //
5 | // Created by IronMan on 2020/11/3.
6 | // Copyright © 2020 CocoaPods. All rights reserved.
7 | //
8 |
9 | import UIKit
10 |
11 | class CharacterExtensionViewController: BaseViewController {
12 |
13 | override func viewDidLoad() {
14 | super.viewDidLoad()
15 |
16 | headDataArray = ["一、Character 与其他类型的转换", "二、常用的属性和方法"]
17 | dataArray = [["Character 转 String", "Character 转 Int"], ["判断是不是 Emoji 表情"]]
18 | }
19 | }
20 |
21 | // MARK: - 二、常用的属性和方法
22 | extension CharacterExtensionViewController {
23 |
24 | // MARK: 2.01、判断是不是 Emoji 表情
25 | @objc func test201() {
26 | let emoji: Character = "🙃"
27 | JKPrint("判断是不是 Emoji 表情", "\(emoji) 是不是emoji表情:\(emoji.jk.isEmoji)")
28 | }
29 | }
30 |
31 | // MARK: - 一、Character 与其他类型的转换
32 | extension CharacterExtensionViewController {
33 |
34 | // MARK: 1.02、Character 转 Int
35 | @objc func test102() {
36 | let charater: Character = "f"
37 | JKPrint("Character 转 Int", "\(charater) 转 Int 后为 \(charater.jk.charToInt ?? 0)")
38 | }
39 |
40 | // MARK: 1.01、Character 转 String
41 | @objc func test101() {
42 | let charater: Character = "a"
43 | JKPrint("Character 转 String", "\(charater) 转 String 后为 \(charater.jk.charToString)")
44 | }
45 | }
46 |
47 |
--------------------------------------------------------------------------------
/Example/JKSwiftExtension/Class/FoundationExtensionViewController/Controller/DateFormatterExtensionViewController.swift:
--------------------------------------------------------------------------------
1 | //
2 | // DateFormatterExtensionViewController.swift
3 | // JKSwiftExtension_Example
4 | //
5 | // Created by IronMan on 2020/11/4.
6 | // Copyright © 2020 CocoaPods. All rights reserved.
7 | //
8 |
9 | import UIKit
10 |
11 | class DateFormatterExtensionViewController: BaseViewController {
12 |
13 | override func viewDidLoad() {
14 | super.viewDidLoad()
15 |
16 | headDataArray = ["一、基本的扩展"]
17 | dataArray = [["格式化快捷方式"]]
18 | }
19 |
20 | }
21 |
22 | // MARK: - 一、基本的扩展
23 | extension DateFormatterExtensionViewController {
24 |
25 | // MARK: 1.01、格式化快捷方式
26 | @objc func test101() {
27 | let dateFormatter = DateFormatter(format: "EEEE")
28 | JKPrint("格式化快捷方式", "\(dateFormatter)")
29 | }
30 | }
31 |
--------------------------------------------------------------------------------
/Example/JKSwiftExtension/Class/FoundationExtensionViewController/Controller/IndexPathExtensionViewController.swift:
--------------------------------------------------------------------------------
1 | //
2 | // IndexPathExtensionViewController.swift
3 | // JKSwiftExtension_Example
4 | //
5 | // Created by IronMan on 2020/12/31.
6 | // Copyright © 2020 CocoaPods. All rights reserved.
7 | //
8 |
9 | import UIKit
10 |
11 | class IndexPathExtensionViewController: BaseViewController {
12 |
13 | override func viewDidLoad() {
14 | super.viewDidLoad()
15 |
16 | headDataArray = ["一、基本扩展"]
17 | dataArray = [["{section, row}", "当前 NSIndexPath 的前一个 NSIndexPath", "当前 NSIndexPath 的后一个 NSIndexPath"]]
18 | }
19 | }
20 |
21 | // MARK: - 一、基本扩展
22 | extension IndexPathExtensionViewController {
23 |
24 | // MARK: 1.03、当前 NSIndexPath 的后一个 NSIndexPath
25 | @objc func test103() {
26 |
27 | }
28 |
29 | // MARK: 1.02、当前 NSIndexPath 的前一个 NSIndexPath
30 | @objc func test102() {
31 |
32 | }
33 |
34 | // MARK: 1.01、{section, row}
35 | @objc func test101() {
36 |
37 | }
38 | }
39 |
40 |
--------------------------------------------------------------------------------
/Example/JKSwiftExtension/Class/FoundationExtensionViewController/Controller/NSIndexPathExtensionViewController.swift:
--------------------------------------------------------------------------------
1 | //
2 | // NSIndexPathExtensionViewController.swift
3 | // JKSwiftExtension_Example
4 | //
5 | // Created by IronMan on 2020/12/31.
6 | // Copyright © 2020 CocoaPods. All rights reserved.
7 | //
8 |
9 | import UIKit
10 |
11 | class NSIndexPathExtensionViewController: BaseViewController {
12 |
13 | override func viewDidLoad() {
14 | super.viewDidLoad()
15 |
16 | headDataArray = ["一、基本扩展"]
17 | dataArray = [["{section, row}", "当前 NSIndexPath 的前一个 NSIndexPath", "当前 NSIndexPath 的后一个 NSIndexPath"]]
18 | }
19 | }
20 |
21 | // MARK: - 一、基本扩展
22 | extension NSIndexPathExtensionViewController {
23 |
24 | // MARK: 1.03、当前 NSIndexPath 的后一个 NSIndexPath
25 | @objc func test103() {
26 |
27 | }
28 |
29 | // MARK: 1.02、当前 NSIndexPath 的前一个 NSIndexPath
30 | @objc func test102() {
31 |
32 | }
33 |
34 | // MARK: 1.01、{section, row}
35 | @objc func test101() {
36 |
37 | }
38 | }
39 |
--------------------------------------------------------------------------------
/Example/JKSwiftExtension/Class/FoundationExtensionViewController/Controller/NSObjectExtensionViewController.swift:
--------------------------------------------------------------------------------
1 | //
2 | // NSObjectExtensionViewController.swift
3 | // JKSwiftExtension_Example
4 | //
5 | // Created by IronMan on 2020/11/1.
6 | // Copyright © 2020 CocoaPods. All rights reserved.
7 | //
8 |
9 | import UIKit
10 |
11 | class NSObjectExtensionViewController: BaseViewController {
12 |
13 | override func viewDidLoad() {
14 | super.viewDidLoad()
15 | headDataArray = ["一、 NSObject 属性的扩展", "二、一些常用的方法"]
16 | dataArray = [["类名(对象方法)", "类名(类方法)"], ["利用运行时获取类里面的成员变量"]]
17 | }
18 | }
19 |
20 | // MARK: - 二、一些常用的方法
21 | extension NSObjectExtensionViewController {
22 |
23 | // MARK: 2.01、利用运行时获取类里面的成员变量
24 | @objc func test201() {
25 | JKPrint("利用运行时获取类里面的成员变量", "\(UIView.printIvars())")
26 | }
27 | }
28 |
29 | // MARK: - 一、 NSObject 属性的扩展
30 | extension NSObjectExtensionViewController {
31 |
32 | // MARK: 1.02、类名(类方法)
33 | @objc func test102() {
34 | JKPrint("类名(类方法)", "\(Self.className)")
35 | }
36 |
37 | // MARK: 1.01、类名(对象方法)
38 | @objc func test101() {
39 | JKPrint("类名(对象方法)", "\(self.className)")
40 | }
41 | }
42 |
--------------------------------------------------------------------------------
/Example/JKSwiftExtension/Class/FoundationExtensionViewController/Controller/NSRangeExtensionViewController.swift:
--------------------------------------------------------------------------------
1 | //
2 | // NSRangeExtensionViewController.swift
3 | // JKSwiftExtension_Example
4 | //
5 | // Created by IronMan on 2021/2/18.
6 | // Copyright © 2021 CocoaPods. All rights reserved.
7 | //
8 |
9 | import UIKit
10 |
11 | class NSRangeExtensionViewController: BaseViewController {
12 |
13 | override func viewDidLoad() {
14 | super.viewDidLoad()
15 |
16 | headDataArray = ["一、基本的扩展"]
17 | dataArray = [["NSRange转换成Range的方法"]]
18 | }
19 | }
20 |
21 | // MARK: - 一、基本的扩展
22 | extension NSRangeExtensionViewController {
23 |
24 | // MARK: 1.01、NSRange转换成Range的方法
25 | @objc func test101() {
26 | let string = "123456Hello World !!!"
27 | let nsRange = NSRange(location: 2, length: 2)
28 |
29 | if let range = nsRange.jk.toRange(string: string) {
30 | JKPrint("NSRange转换成Range的方法", "父字符串:\(string)", "\(nsRange) 转Range后为:\(range)")
31 | } else {
32 | debugPrint("没有拿到了range")
33 | }
34 | }
35 | }
36 |
37 |
--------------------------------------------------------------------------------
/Example/JKSwiftExtension/Class/FoundationExtensionViewController/Controller/RangeExtensionViewController.swift:
--------------------------------------------------------------------------------
1 | //
2 | // RangeExtensionViewController.swift
3 | // JKSwiftExtension_Example
4 | //
5 | // Created by IronMan on 2021/3/25.
6 | // Copyright © 2021 CocoaPods. All rights reserved.
7 | //
8 |
9 | import UIKit
10 |
11 | class RangeExtensionViewController: BaseViewController {
12 |
13 | override func viewDidLoad() {
14 | super.viewDidLoad()
15 |
16 | headDataArray = ["一、基本的扩展"]
17 | dataArray = [["Range转换成NSRange的方法"]]
18 | }
19 | }
20 |
21 | // MARK: - 一、基本的扩展
22 | extension RangeExtensionViewController {
23 |
24 | // MARK: 1.01、Range转换成NSRange的方法
25 | @objc func test101() {
26 | let string = "123456Hello World !!!"
27 | let subString = "Hello World"
28 |
29 | if let range = string.range(of: subString) {
30 | let nsRange = range.jk.toNSRange(in: string)
31 | JKPrint("Range转换成NSRange的方法", "父字符串为:\(string) 子字符串为:\(subString)", "子字符串在父字符串里面的range为 \(range) 转NSRange后为:\(nsRange)")
32 | }
33 | }
34 | }
35 |
36 |
--------------------------------------------------------------------------------
/Example/JKSwiftExtension/Class/FoundationExtensionViewController/Controller/UIntExtensionViewController.swift:
--------------------------------------------------------------------------------
1 | //
2 | // UIntExtensionViewController.swift
3 | // JKSwiftExtension_Example
4 | //
5 | // Created by IronMan on 2020/11/3.
6 | // Copyright © 2020 CocoaPods. All rights reserved.
7 | //
8 |
9 | import UIKit
10 |
11 | class UIntExtensionViewController: BaseViewController {
12 |
13 | override func viewDidLoad() {
14 | super.viewDidLoad()
15 |
16 | headDataArray = ["一、UInt 的基本转换"]
17 | dataArray = [["转 Int"]]
18 | }
19 | }
20 |
21 | // MARK: - 一、基本的扩展
22 | extension UIntExtensionViewController {
23 |
24 | // MARK: 1.01、转 Int
25 | @objc func test101() {
26 | let value: UInt = 2345
27 | JKPrint("转 Int", "\(value) 转 Int 后为 \(value.jk.uintToInt)")
28 | }
29 | }
30 |
--------------------------------------------------------------------------------
/Example/JKSwiftExtension/Class/FoundationExtensionViewController/Model/UserDefaultsModel.swift:
--------------------------------------------------------------------------------
1 | //
2 | // UserDefaultsModel.swift
3 | // JKSwiftExtension_Example
4 | //
5 | // Created by 王冲 on 2022/6/12.
6 | // Copyright © 2022 CocoaPods. All rights reserved.
7 | //
8 |
9 | import Foundation
10 |
11 | struct UserDefaultsModel: Codable {
12 | /// 用户的
13 | var uid: Int = 0
14 | /// 用户的名字
15 | var name: String = ""
16 | }
17 |
--------------------------------------------------------------------------------
/Example/JKSwiftExtension/Class/ProtocolViewController/Controller/JKJSONViewController.swift:
--------------------------------------------------------------------------------
1 | //
2 | // JKJSONViewController.swift
3 | // JKSwiftExtension_Example
4 | //
5 | // Created by IronMan on 2021/2/22.
6 | // Copyright © 2021 CocoaPods. All rights reserved.
7 | //
8 |
9 | import UIKit
10 |
11 | //用户类
12 | class User: JKJSON {
13 | /// 姓名
14 | var name: String = ""
15 | /// 昵称
16 | var nickname: String?
17 | /// 年龄
18 | var age: Int?
19 | /// 邮件地址
20 | var emails: [String]?
21 | /// 电话
22 | var tels: [Telephone]?
23 | /// 创建时间
24 | var createTime: Date = Date()
25 | }
26 |
27 | //电话结构体
28 | struct Telephone: JKJSON {
29 | /// 电话标题
30 | var title: String
31 | /// 电话号码
32 | var number: String
33 | }
34 | class JKJSONViewController: UIViewController {
35 |
36 | override func viewDidLoad() {
37 | super.viewDidLoad()
38 | self.title = "签名"
39 | self.view.backgroundColor = .white
40 |
41 | // 创建一个User实例对象
42 | let user1 = User()
43 | user1.name = "hangge"
44 | user1.age = 100
45 | user1.emails = ["hangge@hangge.com","system@hangge.com"]
46 | // 添加动画
47 | let tel1 = Telephone(title: "手机", number: "123456")
48 | let tel2 = Telephone(title: "公司座机", number: "001-0358")
49 | user1.tels = [tel1, tel2]
50 |
51 | // 输出json字符串
52 | debugPrint(user1.toJSONString()!)
53 | }
54 | }
55 |
--------------------------------------------------------------------------------
/Example/JKSwiftExtension/Class/ProtocolViewController/Controller/NibLoadableViewController.swift:
--------------------------------------------------------------------------------
1 | //
2 | // NibLoadableViewController.swift
3 | // JKSwiftExtension_Example
4 | //
5 | // Created by IronMan on 2020/11/18.
6 | // Copyright © 2020 CocoaPods. All rights reserved.
7 | //
8 |
9 | import UIKit
10 |
11 | class NibLoadableViewController: BaseViewController {
12 |
13 | override func viewDidLoad() {
14 | super.viewDidLoad()
15 | headDataArray = ["一、继承于UIView的才可以使用该协议的扩展"]
16 | dataArray = [["加载xib视图"]]
17 | }
18 |
19 | override func didReceiveMemoryWarning() {
20 | super.didReceiveMemoryWarning()
21 | }
22 | }
23 |
24 | // MARK: - 一、继承于UIView的才可以使用该协议的扩展
25 | extension NibLoadableViewController {
26 |
27 | // MARK: 1.01、加载xib视图
28 | @objc func test101() {
29 | var testView = TestView.loadFromNib().frame(CGRect(x: 0, y: 100, width: 100, height: 100))
30 | testView.jk.centerX = self.view.jk.centerX
31 | self.view.addSubview(testView)
32 |
33 | JKAsyncs.asyncDelay(3) {
34 | } _: {
35 | testView.removeFromSuperview()
36 | }
37 | }
38 |
39 | }
40 |
41 |
--------------------------------------------------------------------------------
/Example/JKSwiftExtension/Class/ProtocolViewController/View/TestView.swift:
--------------------------------------------------------------------------------
1 | //
2 | // TestView.swift
3 | // JKSwiftExtension_Example
4 | //
5 | // Created by IronMan on 2020/11/18.
6 | // Copyright © 2020 CocoaPods. All rights reserved.
7 | //
8 |
9 | import UIKit
10 |
11 | class TestView: UIView, JKNibLoadable {
12 |
13 | }
14 |
--------------------------------------------------------------------------------
/Example/JKSwiftExtension/Class/SmallToolsViewController/Controller/JKCommonToolViewController.swift:
--------------------------------------------------------------------------------
1 | //
2 | // JKCommonToolViewController.swift
3 | // JKSwiftExtension_Example
4 | //
5 | // Created by IronMan on 2020/11/18.
6 | // Copyright © 2020 CocoaPods. All rights reserved.
7 | //
8 |
9 | import UIKit
10 |
11 | class JKCommonToolViewController: BaseViewController {
12 |
13 | override func viewDidLoad() {
14 | super.viewDidLoad()
15 |
16 | headDataArray = ["一、基本的方法"]
17 | dataArray = [["交换两个值", "模型对比返回差异"]]
18 | }
19 |
20 | override func didReceiveMemoryWarning() {
21 | super.didReceiveMemoryWarning()
22 | }
23 | }
24 |
25 | // MARK: - 一、基本的方法
26 | extension JKCommonToolViewController {
27 |
28 | // MARK: 1.02、模型对比返回差异
29 | @objc func test102() {
30 | let person1 = Person()
31 | person1.name = "A"
32 | person1.age = 20
33 |
34 | let person2 = Person()
35 | person2.name = "B"
36 | person2.age = 1
37 | let params = JKCommonTool.diffBetween(firstModel: person1, secondModel: person2, ignores: ["name"])
38 | debugPrint("param:\(params)")
39 | // self.navigationController?.pushViewController(NotificationTetstViewController(), animated: true)
40 | }
41 |
42 | // MARK: 1.01、交换两个值
43 | @objc func test101() {
44 | var a = 1
45 | var b = 2
46 | JKCommonTool.swapMe(value1: &a, value2: &b)
47 | JKPrint("交换两个值", "a = \(a) b = \(b)")
48 | }
49 | }
50 |
--------------------------------------------------------------------------------
/Example/JKSwiftExtension/Class/SmallToolsViewController/Controller/JKCustomPickViewViewController.swift:
--------------------------------------------------------------------------------
1 | //
2 | // JKCustomPickViewViewController.swift
3 | // JKSwiftExtension_Example
4 | //
5 | // Created by 王冲 on 2023/2/14.
6 | // Copyright © 2023 CocoaPods. All rights reserved.
7 | //
8 |
9 | import UIKit
10 |
11 | class JKCustomPickViewViewController: UIViewController {
12 |
13 | override func viewDidLoad() {
14 | super.viewDidLoad()
15 |
16 | self.view.backgroundColor = .white
17 | }
18 |
19 | override func touchesBegan(_ touches: Set, with event: UIEvent?) {
20 | let pickerView = JKSoundPickView(frame: CGRect(x: 0, y: 0, width: UIScreen.main.bounds.size.width, height: UIScreen.main.bounds.size.height), dataSource: ["1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15", "16", "17", "18", "19", "20", "21", "22", "23", "24", "25", "26", "27", "28", "29"], inComponent: 2)
21 | // pickerView.rowAndComponentCallBack = {(resultStr) in
22 | // debugPrint(resultStr as Any)
23 | // }
24 | pickerView.show()
25 | }
26 |
27 | /*
28 | // MARK: - Navigation
29 |
30 | // In a storyboard-based application, you will often want to do a little preparation before navigation
31 | override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
32 | // Get the new view controller using segue.destination.
33 | // Pass the selected object to the new view controller.
34 | }
35 | */
36 |
37 | }
38 |
--------------------------------------------------------------------------------
/Example/JKSwiftExtension/Class/SmallToolsViewController/Controller/JKOperatorViewController.swift:
--------------------------------------------------------------------------------
1 | //
2 | // JKOperatorViewController.swift
3 | // JKSwiftExtension_Example
4 | //
5 | // Created by 小冲冲 on 2023/12/8.
6 | // Copyright © 2023 CocoaPods. All rights reserved.
7 | //
8 |
9 | import UIKit
10 | import JKSwiftExtension
11 |
12 | class JKOperatorViewController: BaseViewController {
13 |
14 | override func viewDidLoad() {
15 | super.viewDidLoad()
16 | headDataArray = ["一、位移运算符"]
17 | dataArray = [["右移算符"]]
18 | }
19 | }
20 |
21 | //MARK: - 一、位移运算符
22 | extension JKOperatorViewController {
23 |
24 | //MARK: 1.01、无符号右移运算符
25 | @objc func test101() {
26 | debugPrint("\(-8192)右移1位后结果为:\(-8192 |>>>| 1)")
27 | debugPrint("\(2147483642)右移1位后结果为:\(2147483642 |>>>| 1)")
28 | }
29 | }
30 |
--------------------------------------------------------------------------------
/Example/JKSwiftExtension/Class/SmallToolsViewController/Controller/JKPaddingLabelViewController.swift:
--------------------------------------------------------------------------------
1 | //
2 | // JKPaddingLabelViewController.swift
3 | // JKSwiftExtension_Example
4 | //
5 | // Created by IronMan on 2021/2/26.
6 | // Copyright © 2021 CocoaPods. All rights reserved.
7 | //
8 |
9 | import UIKit
10 |
11 | class JKPaddingLabelViewController: BaseViewController {
12 |
13 | override func viewDidLoad() {
14 | super.viewDidLoad()
15 |
16 | headDataArray = ["一、基本的使用"]
17 | dataArray = [["设置有内边距的label"]]
18 | }
19 | }
20 |
21 | // MARK: - 一、基本的工具
22 | extension JKPaddingLabelViewController {
23 |
24 | // MARK: 1.01、设置可点击的label
25 | @objc func test101() {
26 |
27 | let label = JKPaddingLabel()
28 | label.backgroundColor = UIColor.randomColor
29 | label.text = "我是有内边距的"
30 | label.paddingTop = 5
31 | label.paddingLeft = 5
32 | label.paddingBottom = 5
33 | label.paddingRight = 5
34 | self.view.addSubview(label)
35 |
36 | label.snp.makeConstraints { (make) in
37 | make.center.equalToSuperview()
38 | make.height.width.lessThanOrEqualTo(100)
39 | }
40 |
41 | JKAsyncs.asyncDelay(3) {
42 | } _: {
43 | label.removeFromSuperview()
44 | }
45 | }
46 | }
47 |
--------------------------------------------------------------------------------
/Example/JKSwiftExtension/Class/SmallToolsViewController/Controller/JKScreenShieldViewViewController.swift:
--------------------------------------------------------------------------------
1 | //
2 | // JKScreenShieldViewViewController.swift
3 | // JKSwiftExtension_Example
4 | //
5 | // Created by chongwang on 2024/3/19.
6 | // Copyright © 2024 CocoaPods. All rights reserved.
7 | //
8 |
9 | import UIKit
10 |
11 | class JKScreenShieldViewViewController: UIViewController {
12 |
13 | override func viewDidLoad() {
14 | super.viewDidLoad()
15 | self.view.backgroundColor = .white
16 | self.view.addSubview(screenShieldView)
17 | screenShieldView.snp.makeConstraints { make in
18 | make.center.equalToSuperview()
19 | make.size.equalTo(CGSize(width: 200, height: 200))
20 | }
21 |
22 | screenShieldView.addSubview(testView1)
23 | testView1.snp.makeConstraints { make in
24 | make.center.equalToSuperview()
25 | make.size.equalTo(CGSize(width: 100, height: 100))
26 | }
27 | }
28 |
29 | /// 防截屏录屏子视图
30 | lazy var testView1: UIView = {
31 | let testView = UIView()
32 | testView.backgroundColor = .yellow
33 | return testView
34 | }()
35 |
36 | /// 防止截屏,放在其上子视图都会被屏蔽截图
37 | lazy var screenShieldView: JKScreenShieldView = {
38 | let shieldView = JKScreenShieldView()
39 | shieldView.backgroundColor = .brown
40 | return shieldView
41 | }()
42 | }
43 |
--------------------------------------------------------------------------------
/Example/JKSwiftExtension/Class/SmallToolsViewController/Controller/JKTaskManagerViewController.swift:
--------------------------------------------------------------------------------
1 | //
2 | // JKTaskManagerViewController.swift
3 | // JKSwiftExtension_Example
4 | //
5 | // Created by chongwang on 2025/2/5.
6 | // Copyright © 2025 CocoaPods. All rights reserved.
7 | //
8 |
9 | import UIKit
10 |
11 | class JKTaskManagerViewController: BaseViewController {
12 |
13 | override func viewDidLoad() {
14 | super.viewDidLoad()
15 |
16 | headDataArray = ["一、基本使用"]
17 | dataArray = [["延迟任务"]]
18 |
19 | }
20 |
21 | override func didReceiveMemoryWarning() {
22 | super.didReceiveMemoryWarning()
23 | }
24 | }
25 |
26 | // MARK: - 一、基本使用
27 | extension JKTaskManagerViewController {
28 |
29 | // MARK: 1.01、延迟任务
30 | @objc func test101() {
31 | let taskManager = JKTaskManager()
32 |
33 | // 调度一个延迟任务
34 | taskManager.scheduleTask(identifier: "task1", delay: 5) {
35 | debugPrint("任务 1 执行")
36 | }
37 |
38 | // 取消任务
39 | // taskManager.cancelTask(identifier: "task1")
40 | }
41 | }
42 |
--------------------------------------------------------------------------------
/Example/JKSwiftExtension/Class/SmallToolsViewController/Controller/KeyboardAccessoryViewController.swift:
--------------------------------------------------------------------------------
1 | //
2 | // KeyboardAccessoryViewController.swift
3 | // JKSwiftExtension_Example
4 | //
5 | // Created by IronMan on 2020/11/18.
6 | // Copyright © 2020 CocoaPods. All rights reserved.
7 | //
8 |
9 | import UIKit
10 |
11 | class KeyboardAccessoryViewController: BaseViewController {
12 | var textView: UITextView = {
13 | let view = UITextView(frame: CGRect(x: 20, y: 100, width: jk_kScreenW - 40, height: 200))
14 | view.backgroundColor = .randomColor
15 | return view
16 | }()
17 |
18 | override func viewDidLoad() {
19 | super.viewDidLoad()
20 |
21 | headDataArray = ["一、键盘的 inputAccessoryView"]
22 | dataArray = [["done"]]
23 |
24 | let keyboardAccessory = KeyboardAccessory()
25 | keyboardAccessory.delegate = self
26 | textView.inputAccessoryView = keyboardAccessory
27 | self.view.addSubview(textView)
28 | }
29 |
30 | override func didReceiveMemoryWarning() {
31 | super.didReceiveMemoryWarning()
32 | }
33 | }
34 |
35 | // MARK: - 一、基本的方法
36 | extension KeyboardAccessoryViewController: KeyboardAccessoryDelegate {
37 |
38 | func keyboardAccessoryDone() {
39 | debugPrint("点击了 done")
40 | UIApplication.jk.keyWindow?.endEditing(true)
41 | }
42 | }
43 |
44 |
--------------------------------------------------------------------------------
/Example/JKSwiftExtension/Class/SmallToolsViewController/Model/Person.swift:
--------------------------------------------------------------------------------
1 | //
2 | // Person.swift
3 | // JKSwiftExtension_Example
4 | //
5 | // Created by IronMan on 2022/2/15.
6 | // Copyright © 2022 CocoaPods. All rights reserved.
7 | //
8 |
9 | import UIKit
10 |
11 | @objcMembers class Person: NSObject {
12 | /// 年龄
13 | @objc dynamic var age: Int = 0
14 |
15 | var name: String = ""
16 |
17 | var number: Int = 20 {
18 | willSet {
19 | self.number = 999
20 | }
21 | didSet {
22 | debugPrint("旧值:\(oldValue) 新值:\(self.number)")
23 | }
24 | }
25 |
26 | var height: Int {
27 | if age > 10 {
28 | return 100
29 | }
30 | return 0
31 | }
32 |
33 | /// 修改成员变量的值
34 | func addValue() {
35 | age += 1
36 | }
37 |
38 | deinit {
39 | debugPrint("----销毁-----")
40 | }
41 | }
42 |
43 |
44 | @objcMembers class SonSon: NSObject {
45 | var age = 10
46 | }
47 |
48 | protocol DDD {
49 | func test()
50 | }
51 |
--------------------------------------------------------------------------------
/Example/JKSwiftExtension/Class/SmallToolsViewController/Model/SoundModel.swift:
--------------------------------------------------------------------------------
1 | //
2 | // SoundModel.swift
3 | // JKSwiftExtension_Example
4 | //
5 | // Created by 王冲 on 2023/3/14.
6 | // Copyright © 2023 CocoaPods. All rights reserved.
7 | //
8 |
9 | import UIKit
10 |
11 | class SoundModel: NSObject {
12 | /// 名字
13 | var name: String = ""
14 | /// 1-63的需要,达到63后从1开始,指令全部(有值的音效槽)发送
15 | var sound_weight: Int = 1
16 | }
17 |
--------------------------------------------------------------------------------
/Example/JKSwiftExtension/Class/SmallToolsViewController/View/DescriptionCustomViewCell.swift:
--------------------------------------------------------------------------------
1 | //
2 | // DescriptionCustomViewCell.swift
3 | // FutureBull
4 | //
5 | // Created by IronMan on 2021/7/27.
6 | // Copyright © 2021 wuyanwei. All rights reserved.
7 | //
8 |
9 | import UIKit
10 |
11 | class DescriptionCustomViewCell: UITableViewCell {
12 |
13 | /// 文本的展示
14 | var contentLabel: UILabel = {
15 | let label = UILabel()
16 | label.font = UIFont.jk.textR(14)
17 | label.textColor = UIColor.cN3
18 | label.numberOfLines = 0
19 | label.textAlignment = .left
20 | return label
21 | }()
22 |
23 | override init(style: UITableViewCell.CellStyle, reuseIdentifier: String?) {
24 | super.init(style: style, reuseIdentifier: reuseIdentifier)
25 | // self.selectionStyle = .none
26 | self.contentView.backgroundColor = .cBackViewColor
27 | self.contentView.addSubview(contentLabel)
28 | contentLabel.snp.makeConstraints { (make) in
29 | make.edges.equalToSuperview().inset(UIEdgeInsets(top: 6, left: 15, bottom: 12, right: 15))
30 | }
31 | }
32 |
33 | required init?(coder: NSCoder) {
34 | fatalError("init(coder:) has not been implemented")
35 | }
36 | }
37 |
--------------------------------------------------------------------------------
/Example/JKSwiftExtension/Class/SmallToolsViewController/View/JKPanViewCustomView.swift:
--------------------------------------------------------------------------------
1 | //
2 | // JKPanViewCustomView.swift
3 | // JKSwiftExtension_Example
4 | //
5 | // Created by 王冲 on 2022/12/6.
6 | // Copyright © 2022 CocoaPods. All rights reserved.
7 | //
8 |
9 | import UIKit
10 |
11 | class JKPanViewCustomView: JKPanView {
12 |
13 | override init(frame: CGRect) {
14 | super.init(frame: frame)
15 | self.backgroundColor = .white
16 | self.addSubview(testView1)
17 | self.addSubview(testView2)
18 |
19 | testView1.snp.makeConstraints { make in
20 | make.top.left.equalTo(20)
21 | make.right.equalTo(-20)
22 | make.height.equalTo(30)
23 | }
24 |
25 | testView2.snp.makeConstraints { make in
26 | make.bottom.left.equalTo(20)
27 | make.right.equalTo(-20)
28 | make.height.equalTo(30)
29 | }
30 | }
31 |
32 | required init?(coder: NSCoder) {
33 | fatalError("init(coder:) has not been implemented")
34 | }
35 |
36 | lazy var testView1 = {
37 | let view = UIView()
38 | view.backgroundColor = .brown
39 | return view
40 | }()
41 |
42 | lazy var testView2 = {
43 | let view = UIView()
44 | view.backgroundColor = .green
45 | return view
46 | }()
47 |
48 | }
49 |
--------------------------------------------------------------------------------
/Example/JKSwiftExtension/Class/SmallToolsViewController/View/JKRollingNoticeViewCell2.swift:
--------------------------------------------------------------------------------
1 | //
2 | // JKRollingNoticeViewCell2.swift
3 | // JKSwiftExtension_Example
4 | //
5 | // Created by 王冲 on 2022/5/16.
6 | // Copyright © 2022 CocoaPods. All rights reserved.
7 | //
8 |
9 | import UIKit
10 |
11 | class JKRollingNoticeViewCell2: JKNoticeViewCell {
12 |
13 | @IBOutlet weak var contentLabel: UILabel!
14 |
15 | override func awakeFromNib() {
16 | super.awakeFromNib()
17 | }
18 |
19 | func noticeCellData(name: String) {
20 | contentLabel.text = name
21 | }
22 | }
23 |
--------------------------------------------------------------------------------
/Example/JKSwiftExtension/Class/SmallToolsViewController/View/JKTeamRideShareLongImageCollectionViewCell.swift:
--------------------------------------------------------------------------------
1 | //
2 | // JKTeamRideShareLongImageCollectionViewCell.swift
3 | // JKScrollViewCard
4 | //
5 | // Created by chongwang on 2025/1/6.
6 | //
7 |
8 | import UIKit
9 | import SnapKit
10 |
11 | class JKTeamRideShareLongImageCollectionViewCell: UICollectionViewCell {
12 |
13 | override init(frame: CGRect) {
14 | super.init(frame: frame)
15 | initUI()
16 | commonInit()
17 | changeTheme()
18 | loadData()
19 | }
20 |
21 | required init?(coder: NSCoder) {
22 | fatalError("init(coder:) has not been implemented")
23 | }
24 |
25 | lazy var testView: UIView = {
26 | let view = UIView()
27 | view.backgroundColor = .white
28 | return view
29 | }()
30 | }
31 |
32 | // MARK: - 基本设置
33 | extension JKTeamRideShareLongImageCollectionViewCell {
34 |
35 | private func initUI() {
36 | contentView.addSubview(testView)
37 | }
38 |
39 | private func commonInit() {
40 | testView.snp.makeConstraints { make in
41 | make.center.equalToSuperview()
42 | make.size.equalTo(CGSize(width: 100, height: 100))
43 | }
44 | }
45 |
46 | private func changeTheme() {
47 | contentView.backgroundColor = .green
48 |
49 | layoutIfNeeded()
50 |
51 | testView.jk.addCorner(conrners: .allCorners, radius: 50)
52 | }
53 |
54 | /// 加载数据
55 | private func loadData() {
56 |
57 | }
58 | }
59 |
60 |
--------------------------------------------------------------------------------
/Example/JKSwiftExtension/Class/SmallToolsViewController/View/JKTeamRideShareShortImageCollectionViewCell.swift:
--------------------------------------------------------------------------------
1 | //
2 | // JKTeamRideShareShortImageCollectionViewCell.swift
3 | // JKScrollViewCard
4 | //
5 | // Created by chongwang on 2025/1/6.
6 | //
7 | import UIKit
8 | import SnapKit
9 |
10 | class JKTeamRideShareShortImageCollectionViewCell: UICollectionViewCell {
11 |
12 | override init(frame: CGRect) {
13 | super.init(frame: frame)
14 | initUI()
15 | commonInit()
16 | changeTheme()
17 | loadData()
18 | }
19 |
20 | required init?(coder: NSCoder) {
21 | fatalError("init(coder:) has not been implemented")
22 | }
23 |
24 | lazy var testView: UIView = {
25 | let view = UIView()
26 | view.backgroundColor = .white
27 | return view
28 | }()
29 | }
30 |
31 | // MARK: - 基本设置
32 | extension JKTeamRideShareShortImageCollectionViewCell {
33 |
34 | private func initUI() {
35 | contentView.addSubview(testView)
36 | }
37 |
38 | private func commonInit() {
39 | testView.snp.makeConstraints { make in
40 | make.center.equalToSuperview()
41 | make.size.equalTo(CGSize(width: 100, height: 100))
42 | }
43 | }
44 |
45 | private func changeTheme() {
46 | contentView.backgroundColor = .yellow
47 | }
48 |
49 | /// 加载数据
50 | private func loadData() {
51 |
52 | }
53 | }
54 |
--------------------------------------------------------------------------------
/Example/JKSwiftExtension/Class/UIKitExtensionViewController/Controller/CAGradientLayerExtensionViewController.swift:
--------------------------------------------------------------------------------
1 | //
2 | // CAGradientLayerExtensionViewController.swift
3 | // JKSwiftExtension_Example
4 | //
5 | // Created by IronMan on 2021/2/1.
6 | // Copyright © 2021 CocoaPods. All rights reserved.
7 | //
8 |
9 | import UIKit
10 |
11 | class CAGradientLayerExtensionViewController: BaseViewController {
12 |
13 | override func viewDidLoad() {
14 | super.viewDidLoad()
15 |
16 | headDataArray = ["一、基本的颜色扩展"]
17 | dataArray = [["背景的渐变设置"]]
18 | }
19 | }
20 |
21 | // MARK: - 一、基本的颜色扩展
22 | extension CAGradientLayerExtensionViewController {
23 |
24 | // MARK: 1.01、背景的渐变设置
25 | @objc func test101() {
26 | // 获取彩虹渐变层
27 | let gradientLayer = CAGradientLayer().jk.gradientLayer(.horizontal, [UIColor.red.cgColor, UIColor.green.cgColor], nil)
28 |
29 | let button = UIButton(frame: CGRect(x: 30, y: 150, width: jk_kScreenW - 60, height: 50))
30 | self.view.addSubview(button)
31 |
32 | // 设置其CAGradientLayer对象的frame,并插入button的layer
33 | gradientLayer.frame = CGRect(x: 0, y: 0, width: button.jk.width, height: button.jk.height)
34 | button.layer.insertSublayer(gradientLayer, at: 0)
35 |
36 | JKAsyncs.asyncDelay(2) {
37 | } _: {
38 | button.removeFromSuperview()
39 | }
40 | }
41 | }
42 |
--------------------------------------------------------------------------------
/Example/JKSwiftExtension/Class/UIKitExtensionViewController/Controller/UIBarButtonItemExtensionViewController.swift:
--------------------------------------------------------------------------------
1 | //
2 | // UIBarButtonItemExtensionViewController.swift
3 | // JKSwiftExtension_Example
4 | //
5 | // Created by IronMan on 2020/11/10.
6 | // Copyright © 2020 CocoaPods. All rights reserved.
7 | //
8 |
9 | import UIKit
10 |
11 | class UIBarButtonItemExtensionViewController: BaseViewController {
12 |
13 | override func viewDidLoad() {
14 | super.viewDidLoad()
15 |
16 | headDataArray = ["一、基本的扩展"]
17 | dataArray = [["快捷创建 UIBarButtonItem"]]
18 | }
19 |
20 | @objc func click(sender: UIButton) {
21 | JKPrint("点击事件")
22 | }
23 | }
24 |
25 | // MARK: - 一、基本的扩展
26 | extension UIBarButtonItemExtensionViewController {
27 |
28 | // MARK: 1.01、快捷创建 UIBarButtonItem
29 | @objc func test101() {
30 | let barButtonItem = UIBarButtonItem.jk.createBarbuttonItem(name: "mark", target: self, action: #selector(click))
31 | self.navigationItem.rightBarButtonItem = barButtonItem
32 | }
33 | }
34 |
35 |
--------------------------------------------------------------------------------
/Example/JKSwiftExtension/Class/UIKitExtensionViewController/Controller/UINavigationBarExtensionViewController.swift:
--------------------------------------------------------------------------------
1 | //
2 | // UINavigationBarExtensionViewController.swift
3 | // JKSwiftExtension_Example
4 | //
5 | // Created by IronMan on 2020/12/2.
6 | // Copyright © 2020 CocoaPods. All rights reserved.
7 | //
8 |
9 | import UIKit
10 |
11 | class UINavigationBarExtensionViewController: BaseViewController {
12 |
13 | override func viewDidLoad() {
14 | super.viewDidLoad()
15 |
16 | headDataArray = ["一、基本的扩展"]
17 | dataArray = [["改变StateBar的颜色", "去掉 StateBar 的颜色"]]
18 | }
19 | }
20 |
21 | // MARK: - 一、基本的扩展
22 | extension UINavigationBarExtensionViewController {
23 |
24 | // MARK: 1.02、去掉 StateBar 的颜色
25 | @objc func test102() {
26 | self.navigationController?.navigationBar.resetBackgroundColor()
27 | }
28 |
29 | // MARK: 1.01、改变StateBar的颜色
30 | @objc func test101() {
31 | self.navigationController?.navigationBar.changeStateBarBackgroundColor(.green)
32 | }
33 | }
34 |
--------------------------------------------------------------------------------
/Example/JKSwiftExtension/Class/UIKitExtensionViewController/Controller/UINavigationControllerExtensionViewController.swift:
--------------------------------------------------------------------------------
1 | //
2 | // UINavigationControllerExtensionViewController.swift
3 | // JKSwiftExtension_Example
4 | //
5 | // Created by IronMan on 2020/11/11.
6 | // Copyright © 2020 CocoaPods. All rights reserved.
7 | //
8 |
9 | import UIKit
10 |
11 | class UINavigationControllerExtensionViewController: BaseViewController {
12 |
13 | override func viewDidLoad() {
14 | super.viewDidLoad()
15 |
16 | headDataArray = ["一、基本的扩展"]
17 | dataArray = [["pop返回后再push进某个控制器", "往前返回(Pop)几个控制器", "往前返回(Pop)几个控制器 后 push进某个控制器", "pop 到某个vc,以传入的vc类型为准,从栈顶逐个便利,直到找到这个vc,如果遍历完成后没找到,则返回false"]]
18 | }
19 | }
20 |
21 | // MARK: - 一、基本的扩展
22 | extension UINavigationControllerExtensionViewController {
23 |
24 | // MARK: 1.04、pop 到某个vc,以传入的vc类型为准,从栈顶逐个便利,直到找到这个vc,如果遍历完成后没找到,则返回false
25 | @objc func test104() {
26 | self.navigationController?.jk.popToViewController(as: ViewController.self, animated: true)
27 | }
28 |
29 | // MARK: 1.03、往前返回(Pop)几个控制器 后 push进某个控制器
30 | @objc func test103() {
31 | self.navigationController?.jk.pop(count: 2, andPush: UITableViewExtensionViewController(), animated: true)
32 | }
33 |
34 | // MARK: 1.02、往前返回(Pop)几个控制器
35 | @objc func test102() {
36 | self.navigationController?.jk.pop(count: 2, animated: true)
37 | }
38 |
39 | // MARK: 1.01、pop返回后再push进某个控制器
40 | @objc func test101() {
41 | self.navigationController?.jk.popCurrentAndPush(vc: OneViewController(), animated: true)
42 | }
43 | }
44 |
45 |
--------------------------------------------------------------------------------
/Example/JKSwiftExtension/Class/UIKitExtensionViewController/Controller/UIScreenExtensionViewController.swift:
--------------------------------------------------------------------------------
1 | //
2 | // UIScreenExtensionViewController.swift
3 | // JKSwiftExtension_Example
4 | //
5 | // Created by IronMan on 2020/11/9.
6 | // Copyright © 2020 CocoaPods. All rights reserved.
7 | //
8 |
9 | import UIKit
10 | class UIScreenExtensionViewController: BaseViewController {
11 |
12 | override func viewDidLoad() {
13 | super.viewDidLoad()
14 |
15 | headDataArray = ["一、基本的扩展"]
16 | dataArray = [["获取宽度", "获取高度", "截屏和录屏通知", "获取屏幕对角线长度"]]
17 | }
18 | }
19 |
20 | // MARK: - 一、基本的扩展
21 | extension UIScreenExtensionViewController {
22 | // MARK: 1.4、获取屏幕对角线长度
23 | @objc func test104() {
24 | debugPrint("获取屏幕对角线长度:\(UIScreen.jk.diagonalLength)")
25 |
26 | }
27 |
28 | // MARK: 1.03、截屏通知
29 | @objc func test103() {
30 | UIScreen.jk.detectScreenShot { (result) in
31 | JKPrint("\(result)")
32 | }
33 | }
34 |
35 | // MARK: 1.02、获取高度
36 | @objc func test102() {
37 | JKPrint("获取高度:\(UIScreen.jk.height)")
38 | }
39 |
40 | // MARK: 1.01、获取宽度
41 | @objc func test101() {
42 | JKPrint("获取宽度:\(UIScreen.jk.width)")
43 | }
44 | }
45 |
46 |
--------------------------------------------------------------------------------
/Example/JKSwiftExtension/Class/UIKitExtensionViewController/Controller/UISliderExtensionViewController.swift:
--------------------------------------------------------------------------------
1 | //
2 | // UISliderExtensionViewController.swift
3 | // JKSwiftExtension_Example
4 | //
5 | // Created by IronMan on 2021/1/5.
6 | // Copyright © 2021 CocoaPods. All rights reserved.
7 | //
8 |
9 | import UIKit
10 |
11 | class UISliderExtensionViewController: BaseViewController {
12 |
13 | override func viewDidLoad() {
14 | super.viewDidLoad()
15 |
16 | headDataArray = ["一、基本的扩展"]
17 | dataArray = [["UISlider的 闭包事件"]]
18 | }
19 | }
20 |
21 | // MARK: - 一、基本的扩展
22 | extension UISliderExtensionViewController {
23 |
24 | // MARK: 1.01、UISlider的 闭包事件
25 | @objc func test101() {
26 | let slider = UISlider(frame: CGRect(x: 50, y: 100, width: 150, height: 50))
27 | slider.backgroundColor = .randomColor
28 | slider.maximumValue = 10
29 | slider.minimumValue = 0
30 | slider.value = 0.2
31 | slider.jk.setHandle { (value) in
32 | guard let weakvalue = value else {
33 | return
34 | }
35 | debugPrint("\(weakvalue)")
36 | }
37 | self.view.addSubview(slider)
38 |
39 | JKAsyncs.asyncDelay(20) {
40 | } _: {
41 | slider.removeFromSuperview()
42 | }
43 | }
44 | }
45 |
--------------------------------------------------------------------------------
/Example/JKSwiftExtension/Class/UIKitExtensionViewController/Controller/UITabBarControllerExtensionViewController.swift:
--------------------------------------------------------------------------------
1 | //
2 | // UITabBarControllerExtensionViewController.swift
3 | // JKSwiftExtension_Example
4 | //
5 | // Created by IronMan on 2020/12/31.
6 | // Copyright © 2020 CocoaPods. All rights reserved.
7 | //
8 |
9 | import UIKit
10 |
11 | class UITabBarControllerExtensionViewController: BaseViewController {
12 |
13 | override func viewDidLoad() {
14 | super.viewDidLoad()
15 |
16 | headDataArray = ["一、基本扩展"]
17 | dataArray = [["当前选择索引"]]
18 | }
19 | }
20 |
21 | // MARK: - 一、基本扩展
22 | extension UITabBarControllerExtensionViewController {
23 |
24 | // MARK: 1.01、当前选择索引
25 | @objc func test101() {
26 | JKPrint("当前选择索引:\(UITabBarController.jk.selectedIdx)")
27 | }
28 | }
29 |
--------------------------------------------------------------------------------
/Example/JKSwiftExtension/Class/UIKitExtensionViewController/Controller/UITabbarExtensionViewController.swift:
--------------------------------------------------------------------------------
1 | //
2 | // UITabbarExtensionViewController.swift
3 | // JKSwiftExtension_Example
4 | //
5 | // Created by 小冲冲 on 2023/10/17.
6 | // Copyright © 2023 CocoaPods. All rights reserved.
7 | //
8 |
9 | import UIKit
10 |
11 | class UITabbarExtensionViewController: BaseViewController {
12 |
13 | override func viewDidLoad() {
14 | super.viewDidLoad()
15 |
16 | headDataArray = ["一、基本扩展"]
17 | dataArray = [["设置透明背景"]]
18 | }
19 |
20 | }
21 |
22 | // MARK: - 一、基本扩展
23 | extension UITabbarExtensionViewController {
24 |
25 | // MARK: 1.01、设置透明背景
26 | @objc func test101() {
27 | JKPrint("设置透明背景")
28 | }
29 | }
30 |
--------------------------------------------------------------------------------
/Example/JKSwiftExtension/Class/UIKitExtensionViewController/Controller/UITableViewCellExtensionViewController.swift:
--------------------------------------------------------------------------------
1 | //
2 | // UITableViewCellExtensionViewController.swift
3 | // JKSwiftExtension_Example
4 | //
5 | // Created by IronMan on 2020/12/17.
6 | // Copyright © 2020 CocoaPods. All rights reserved.
7 | //
8 |
9 | import UIKit
10 |
11 | class UITableViewCellExtensionViewController: BaseViewController {
12 |
13 | override func viewDidLoad() {
14 | super.viewDidLoad()
15 |
16 | headDataArray = ["一、基本的扩展"]
17 | dataArray = [["返回cell所在的UITableView"]]
18 | }
19 | }
20 |
21 | // MARK: - 一、基本的扩展
22 | extension UITableViewCellExtensionViewController {
23 |
24 | // MARK: 1.01、返回cell所在的UITableView
25 | @objc func test101() {
26 |
27 | }
28 | }
29 |
--------------------------------------------------------------------------------
/Example/JKSwiftExtension/Class/UIKitExtensionViewController/Controller/UIVisualEffectViewExtensionViewController.swift:
--------------------------------------------------------------------------------
1 | //
2 | // UIVisualEffectViewExtensionViewController.swift
3 | // JKSwiftExtension_Example
4 | //
5 | // Created by 王冲 on 2022/3/26.
6 | // Copyright © 2022 CocoaPods. All rights reserved.
7 | //
8 |
9 | import UIKit
10 |
11 | class UIVisualEffectViewExtensionViewController: BaseViewController {
12 |
13 | override func viewDidLoad() {
14 | super.viewDidLoad()
15 |
16 | headDataArray = ["一、基本的扩展"]
17 | dataArray = [["创建一个UIVisualEffectView对象"]]
18 | }
19 | }
20 |
21 | // MARK: - 一、基本的扩展
22 | extension UIVisualEffectViewExtensionViewController {
23 |
24 | // MARK: 1.01、创建一个UIVisualEffectView对象
25 | @objc func test101() {
26 | let visualEffectView = UIVisualEffectView.jk.visualEffectView(size: CGSize(width: 100, height: 100))
27 | let image = UIImage(named: "testicon")
28 | var imageView = UIImageView(frame: CGRect(x: 0, y: 150, width: 200, height: 200))
29 | imageView.image = image
30 | imageView.contentMode = .scaleAspectFit
31 | imageView.jk.centerX = self.view.jk.centerX
32 | imageView.addSubview(visualEffectView)
33 | self.view.addSubview(imageView)
34 | JKAsyncs.asyncDelay(3, {
35 | }) {
36 | imageView.removeFromSuperview()
37 | }
38 | }
39 | }
40 |
--------------------------------------------------------------------------------
/Example/JKSwiftExtension/English.lproj/Localizable.strings:
--------------------------------------------------------------------------------
1 | /*
2 | Localizable.strings
3 | JKSwiftExtension
4 |
5 | Created by chongwang on 2024/4/26.
6 | Copyright © 2024 CocoaPods. All rights reserved.
7 | */
8 |
9 | "Text_01" = "banana";
10 |
--------------------------------------------------------------------------------
/Example/JKSwiftExtension/GuideX_2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/JoanKing/JKSwiftExtension/60ed6ddc03b541fe251cb0bbc0cca1fea389a4ac/Example/JKSwiftExtension/GuideX_2.png
--------------------------------------------------------------------------------
/Example/JKSwiftExtension/Images.xcassets/AppIcon.appiconset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "iphone",
5 | "size" : "20x20",
6 | "scale" : "2x"
7 | },
8 | {
9 | "idiom" : "iphone",
10 | "size" : "20x20",
11 | "scale" : "3x"
12 | },
13 | {
14 | "idiom" : "iphone",
15 | "size" : "29x29",
16 | "scale" : "2x"
17 | },
18 | {
19 | "idiom" : "iphone",
20 | "size" : "29x29",
21 | "scale" : "3x"
22 | },
23 | {
24 | "idiom" : "iphone",
25 | "size" : "40x40",
26 | "scale" : "2x"
27 | },
28 | {
29 | "idiom" : "iphone",
30 | "size" : "40x40",
31 | "scale" : "3x"
32 | },
33 | {
34 | "idiom" : "iphone",
35 | "size" : "60x60",
36 | "scale" : "2x"
37 | },
38 | {
39 | "idiom" : "iphone",
40 | "size" : "60x60",
41 | "scale" : "3x"
42 | },
43 | {
44 | "idiom" : "ios-marketing",
45 | "size" : "1024x1024",
46 | "scale" : "1x"
47 | }
48 | ],
49 | "info" : {
50 | "version" : 1,
51 | "author" : "xcode"
52 | }
53 | }
54 |
--------------------------------------------------------------------------------
/Example/JKSwiftExtension/Images.xcassets/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "info" : {
3 | "author" : "xcode",
4 | "version" : 1
5 | }
6 | }
7 |
--------------------------------------------------------------------------------
/Example/JKSwiftExtension/Images.xcassets/Frame 676.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "universal",
5 | "scale" : "1x"
6 | },
7 | {
8 | "filename" : "Frame 676@2x.png",
9 | "idiom" : "universal",
10 | "scale" : "2x"
11 | },
12 | {
13 | "idiom" : "universal",
14 | "scale" : "3x"
15 | }
16 | ],
17 | "info" : {
18 | "author" : "xcode",
19 | "version" : 1
20 | }
21 | }
22 |
--------------------------------------------------------------------------------
/Example/JKSwiftExtension/Images.xcassets/Frame 676.imageset/Frame 676@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/JoanKing/JKSwiftExtension/60ed6ddc03b541fe251cb0bbc0cca1fea389a4ac/Example/JKSwiftExtension/Images.xcassets/Frame 676.imageset/Frame 676@2x.png
--------------------------------------------------------------------------------
/Example/JKSwiftExtension/Images.xcassets/Triangle.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "universal",
5 | "scale" : "1x"
6 | },
7 | {
8 | "filename" : "Triangle@2x.png",
9 | "idiom" : "universal",
10 | "scale" : "2x"
11 | },
12 | {
13 | "filename" : "Triangle@3x.png",
14 | "idiom" : "universal",
15 | "scale" : "3x"
16 | }
17 | ],
18 | "info" : {
19 | "author" : "xcode",
20 | "version" : 1
21 | }
22 | }
23 |
--------------------------------------------------------------------------------
/Example/JKSwiftExtension/Images.xcassets/Triangle.imageset/Triangle@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/JoanKing/JKSwiftExtension/60ed6ddc03b541fe251cb0bbc0cca1fea389a4ac/Example/JKSwiftExtension/Images.xcassets/Triangle.imageset/Triangle@2x.png
--------------------------------------------------------------------------------
/Example/JKSwiftExtension/Images.xcassets/Triangle.imageset/Triangle@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/JoanKing/JKSwiftExtension/60ed6ddc03b541fe251cb0bbc0cca1fea389a4ac/Example/JKSwiftExtension/Images.xcassets/Triangle.imageset/Triangle@3x.png
--------------------------------------------------------------------------------
/Example/JKSwiftExtension/Images.xcassets/bg.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "filename" : "bg.png",
5 | "idiom" : "universal",
6 | "scale" : "1x"
7 | },
8 | {
9 | "idiom" : "universal",
10 | "scale" : "2x"
11 | },
12 | {
13 | "idiom" : "universal",
14 | "scale" : "3x"
15 | }
16 | ],
17 | "info" : {
18 | "author" : "xcode",
19 | "version" : 1
20 | }
21 | }
22 |
--------------------------------------------------------------------------------
/Example/JKSwiftExtension/Images.xcassets/bg.imageset/bg.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/JoanKing/JKSwiftExtension/60ed6ddc03b541fe251cb0bbc0cca1fea389a4ac/Example/JKSwiftExtension/Images.xcassets/bg.imageset/bg.png
--------------------------------------------------------------------------------
/Example/JKSwiftExtension/Images.xcassets/campass_light.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "universal",
5 | "scale" : "1x"
6 | },
7 | {
8 | "filename" : "campass_light@2x.png",
9 | "idiom" : "universal",
10 | "scale" : "2x"
11 | },
12 | {
13 | "filename" : "campass_light@3x.png",
14 | "idiom" : "universal",
15 | "scale" : "3x"
16 | }
17 | ],
18 | "info" : {
19 | "author" : "xcode",
20 | "version" : 1
21 | }
22 | }
23 |
--------------------------------------------------------------------------------
/Example/JKSwiftExtension/Images.xcassets/campass_light.imageset/campass_light@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/JoanKing/JKSwiftExtension/60ed6ddc03b541fe251cb0bbc0cca1fea389a4ac/Example/JKSwiftExtension/Images.xcassets/campass_light.imageset/campass_light@2x.png
--------------------------------------------------------------------------------
/Example/JKSwiftExtension/Images.xcassets/campass_light.imageset/campass_light@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/JoanKing/JKSwiftExtension/60ed6ddc03b541fe251cb0bbc0cca1fea389a4ac/Example/JKSwiftExtension/Images.xcassets/campass_light.imageset/campass_light@3x.png
--------------------------------------------------------------------------------
/Example/JKSwiftExtension/Images.xcassets/cell_drag.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "universal",
5 | "scale" : "1x"
6 | },
7 | {
8 | "filename" : "cell_drag@2x.png",
9 | "idiom" : "universal",
10 | "scale" : "2x"
11 | },
12 | {
13 | "filename" : "cell_drag@3x.png",
14 | "idiom" : "universal",
15 | "scale" : "3x"
16 | }
17 | ],
18 | "info" : {
19 | "author" : "xcode",
20 | "version" : 1
21 | }
22 | }
23 |
--------------------------------------------------------------------------------
/Example/JKSwiftExtension/Images.xcassets/cell_drag.imageset/cell_drag@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/JoanKing/JKSwiftExtension/60ed6ddc03b541fe251cb0bbc0cca1fea389a4ac/Example/JKSwiftExtension/Images.xcassets/cell_drag.imageset/cell_drag@2x.png
--------------------------------------------------------------------------------
/Example/JKSwiftExtension/Images.xcassets/cell_drag.imageset/cell_drag@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/JoanKing/JKSwiftExtension/60ed6ddc03b541fe251cb0bbc0cca1fea389a4ac/Example/JKSwiftExtension/Images.xcassets/cell_drag.imageset/cell_drag@3x.png
--------------------------------------------------------------------------------
/Example/JKSwiftExtension/Images.xcassets/dashline_left_dark.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "universal",
5 | "scale" : "1x"
6 | },
7 | {
8 | "filename" : "dashline_left_dark@2x.png",
9 | "idiom" : "universal",
10 | "scale" : "2x"
11 | },
12 | {
13 | "filename" : "dashline_left_dark@3x.png",
14 | "idiom" : "universal",
15 | "scale" : "3x"
16 | }
17 | ],
18 | "info" : {
19 | "author" : "xcode",
20 | "version" : 1
21 | }
22 | }
23 |
--------------------------------------------------------------------------------
/Example/JKSwiftExtension/Images.xcassets/dashline_left_dark.imageset/dashline_left_dark@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/JoanKing/JKSwiftExtension/60ed6ddc03b541fe251cb0bbc0cca1fea389a4ac/Example/JKSwiftExtension/Images.xcassets/dashline_left_dark.imageset/dashline_left_dark@2x.png
--------------------------------------------------------------------------------
/Example/JKSwiftExtension/Images.xcassets/dashline_left_dark.imageset/dashline_left_dark@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/JoanKing/JKSwiftExtension/60ed6ddc03b541fe251cb0bbc0cca1fea389a4ac/Example/JKSwiftExtension/Images.xcassets/dashline_left_dark.imageset/dashline_left_dark@3x.png
--------------------------------------------------------------------------------
/Example/JKSwiftExtension/Images.xcassets/dashline_left_light.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "universal",
5 | "scale" : "1x"
6 | },
7 | {
8 | "filename" : "dashline_left_light@2x.png",
9 | "idiom" : "universal",
10 | "scale" : "2x"
11 | },
12 | {
13 | "filename" : "dashline_left_light@3x.png",
14 | "idiom" : "universal",
15 | "scale" : "3x"
16 | }
17 | ],
18 | "info" : {
19 | "author" : "xcode",
20 | "version" : 1
21 | }
22 | }
23 |
--------------------------------------------------------------------------------
/Example/JKSwiftExtension/Images.xcassets/dashline_left_light.imageset/dashline_left_light@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/JoanKing/JKSwiftExtension/60ed6ddc03b541fe251cb0bbc0cca1fea389a4ac/Example/JKSwiftExtension/Images.xcassets/dashline_left_light.imageset/dashline_left_light@2x.png
--------------------------------------------------------------------------------
/Example/JKSwiftExtension/Images.xcassets/dashline_left_light.imageset/dashline_left_light@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/JoanKing/JKSwiftExtension/60ed6ddc03b541fe251cb0bbc0cca1fea389a4ac/Example/JKSwiftExtension/Images.xcassets/dashline_left_light.imageset/dashline_left_light@3x.png
--------------------------------------------------------------------------------
/Example/JKSwiftExtension/Images.xcassets/dashline_middle_dark.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "universal",
5 | "scale" : "1x"
6 | },
7 | {
8 | "filename" : "dashline_middle_dark@2x.png",
9 | "idiom" : "universal",
10 | "scale" : "2x"
11 | },
12 | {
13 | "filename" : "dashline_middle_dark@3x.png",
14 | "idiom" : "universal",
15 | "scale" : "3x"
16 | }
17 | ],
18 | "info" : {
19 | "author" : "xcode",
20 | "version" : 1
21 | }
22 | }
23 |
--------------------------------------------------------------------------------
/Example/JKSwiftExtension/Images.xcassets/dashline_middle_dark.imageset/dashline_middle_dark@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/JoanKing/JKSwiftExtension/60ed6ddc03b541fe251cb0bbc0cca1fea389a4ac/Example/JKSwiftExtension/Images.xcassets/dashline_middle_dark.imageset/dashline_middle_dark@2x.png
--------------------------------------------------------------------------------
/Example/JKSwiftExtension/Images.xcassets/dashline_middle_dark.imageset/dashline_middle_dark@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/JoanKing/JKSwiftExtension/60ed6ddc03b541fe251cb0bbc0cca1fea389a4ac/Example/JKSwiftExtension/Images.xcassets/dashline_middle_dark.imageset/dashline_middle_dark@3x.png
--------------------------------------------------------------------------------
/Example/JKSwiftExtension/Images.xcassets/dashline_middle_light.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "universal",
5 | "scale" : "1x"
6 | },
7 | {
8 | "filename" : "dashline_middle_light@2x.png",
9 | "idiom" : "universal",
10 | "scale" : "2x"
11 | },
12 | {
13 | "filename" : "dashline_middle_light@3x.png",
14 | "idiom" : "universal",
15 | "scale" : "3x"
16 | }
17 | ],
18 | "info" : {
19 | "author" : "xcode",
20 | "version" : 1
21 | }
22 | }
23 |
--------------------------------------------------------------------------------
/Example/JKSwiftExtension/Images.xcassets/dashline_middle_light.imageset/dashline_middle_light@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/JoanKing/JKSwiftExtension/60ed6ddc03b541fe251cb0bbc0cca1fea389a4ac/Example/JKSwiftExtension/Images.xcassets/dashline_middle_light.imageset/dashline_middle_light@2x.png
--------------------------------------------------------------------------------
/Example/JKSwiftExtension/Images.xcassets/dashline_middle_light.imageset/dashline_middle_light@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/JoanKing/JKSwiftExtension/60ed6ddc03b541fe251cb0bbc0cca1fea389a4ac/Example/JKSwiftExtension/Images.xcassets/dashline_middle_light.imageset/dashline_middle_light@3x.png
--------------------------------------------------------------------------------
/Example/JKSwiftExtension/Images.xcassets/dashline_right_dark.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "universal",
5 | "scale" : "1x"
6 | },
7 | {
8 | "filename" : "dashline_right_dark@2x.png",
9 | "idiom" : "universal",
10 | "scale" : "2x"
11 | },
12 | {
13 | "filename" : "dashline_right_dark@3x.png",
14 | "idiom" : "universal",
15 | "scale" : "3x"
16 | }
17 | ],
18 | "info" : {
19 | "author" : "xcode",
20 | "version" : 1
21 | }
22 | }
23 |
--------------------------------------------------------------------------------
/Example/JKSwiftExtension/Images.xcassets/dashline_right_dark.imageset/dashline_right_dark@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/JoanKing/JKSwiftExtension/60ed6ddc03b541fe251cb0bbc0cca1fea389a4ac/Example/JKSwiftExtension/Images.xcassets/dashline_right_dark.imageset/dashline_right_dark@2x.png
--------------------------------------------------------------------------------
/Example/JKSwiftExtension/Images.xcassets/dashline_right_dark.imageset/dashline_right_dark@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/JoanKing/JKSwiftExtension/60ed6ddc03b541fe251cb0bbc0cca1fea389a4ac/Example/JKSwiftExtension/Images.xcassets/dashline_right_dark.imageset/dashline_right_dark@3x.png
--------------------------------------------------------------------------------
/Example/JKSwiftExtension/Images.xcassets/dashline_right_light.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "universal",
5 | "scale" : "1x"
6 | },
7 | {
8 | "filename" : "dashline_right_light@2x.png",
9 | "idiom" : "universal",
10 | "scale" : "2x"
11 | },
12 | {
13 | "filename" : "dashline_right_light@3x.png",
14 | "idiom" : "universal",
15 | "scale" : "3x"
16 | }
17 | ],
18 | "info" : {
19 | "author" : "xcode",
20 | "version" : 1
21 | }
22 | }
23 |
--------------------------------------------------------------------------------
/Example/JKSwiftExtension/Images.xcassets/dashline_right_light.imageset/dashline_right_light@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/JoanKing/JKSwiftExtension/60ed6ddc03b541fe251cb0bbc0cca1fea389a4ac/Example/JKSwiftExtension/Images.xcassets/dashline_right_light.imageset/dashline_right_light@2x.png
--------------------------------------------------------------------------------
/Example/JKSwiftExtension/Images.xcassets/dashline_right_light.imageset/dashline_right_light@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/JoanKing/JKSwiftExtension/60ed6ddc03b541fe251cb0bbc0cca1fea389a4ac/Example/JKSwiftExtension/Images.xcassets/dashline_right_light.imageset/dashline_right_light@3x.png
--------------------------------------------------------------------------------
/Example/JKSwiftExtension/Images.xcassets/detect_qr.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "filename" : "detect_qr.png",
5 | "idiom" : "universal",
6 | "scale" : "1x"
7 | },
8 | {
9 | "idiom" : "universal",
10 | "scale" : "2x"
11 | },
12 | {
13 | "idiom" : "universal",
14 | "scale" : "3x"
15 | }
16 | ],
17 | "info" : {
18 | "author" : "xcode",
19 | "version" : 1
20 | }
21 | }
22 |
--------------------------------------------------------------------------------
/Example/JKSwiftExtension/Images.xcassets/detect_qr.imageset/detect_qr.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/JoanKing/JKSwiftExtension/60ed6ddc03b541fe251cb0bbc0cca1fea389a4ac/Example/JKSwiftExtension/Images.xcassets/detect_qr.imageset/detect_qr.png
--------------------------------------------------------------------------------
/Example/JKSwiftExtension/Images.xcassets/drag_delete.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "universal",
5 | "scale" : "1x"
6 | },
7 | {
8 | "filename" : "drag_delete@2x.png",
9 | "idiom" : "universal",
10 | "scale" : "2x"
11 | },
12 | {
13 | "filename" : "drag_delete@3x.png",
14 | "idiom" : "universal",
15 | "scale" : "3x"
16 | }
17 | ],
18 | "info" : {
19 | "author" : "xcode",
20 | "version" : 1
21 | }
22 | }
23 |
--------------------------------------------------------------------------------
/Example/JKSwiftExtension/Images.xcassets/drag_delete.imageset/drag_delete@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/JoanKing/JKSwiftExtension/60ed6ddc03b541fe251cb0bbc0cca1fea389a4ac/Example/JKSwiftExtension/Images.xcassets/drag_delete.imageset/drag_delete@2x.png
--------------------------------------------------------------------------------
/Example/JKSwiftExtension/Images.xcassets/drag_delete.imageset/drag_delete@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/JoanKing/JKSwiftExtension/60ed6ddc03b541fe251cb0bbc0cca1fea389a4ac/Example/JKSwiftExtension/Images.xcassets/drag_delete.imageset/drag_delete@3x.png
--------------------------------------------------------------------------------
/Example/JKSwiftExtension/Images.xcassets/empty_icon.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "universal",
5 | "scale" : "1x"
6 | },
7 | {
8 | "filename" : "empty_icon@2x.png",
9 | "idiom" : "universal",
10 | "scale" : "2x"
11 | },
12 | {
13 | "filename" : "empty_icon@3x.png",
14 | "idiom" : "universal",
15 | "scale" : "3x"
16 | }
17 | ],
18 | "info" : {
19 | "author" : "xcode",
20 | "version" : 1
21 | }
22 | }
23 |
--------------------------------------------------------------------------------
/Example/JKSwiftExtension/Images.xcassets/empty_icon.imageset/empty_icon@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/JoanKing/JKSwiftExtension/60ed6ddc03b541fe251cb0bbc0cca1fea389a4ac/Example/JKSwiftExtension/Images.xcassets/empty_icon.imageset/empty_icon@2x.png
--------------------------------------------------------------------------------
/Example/JKSwiftExtension/Images.xcassets/empty_icon.imageset/empty_icon@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/JoanKing/JKSwiftExtension/60ed6ddc03b541fe251cb0bbc0cca1fea389a4ac/Example/JKSwiftExtension/Images.xcassets/empty_icon.imageset/empty_icon@3x.png
--------------------------------------------------------------------------------
/Example/JKSwiftExtension/Images.xcassets/favorite_delete.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "universal",
5 | "scale" : "1x"
6 | },
7 | {
8 | "filename" : "favorite_delete@2x.png",
9 | "idiom" : "universal",
10 | "scale" : "2x"
11 | },
12 | {
13 | "filename" : "favorite_delete@3x.png",
14 | "idiom" : "universal",
15 | "scale" : "3x"
16 | }
17 | ],
18 | "info" : {
19 | "author" : "xcode",
20 | "version" : 1
21 | }
22 | }
23 |
--------------------------------------------------------------------------------
/Example/JKSwiftExtension/Images.xcassets/favorite_delete.imageset/favorite_delete@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/JoanKing/JKSwiftExtension/60ed6ddc03b541fe251cb0bbc0cca1fea389a4ac/Example/JKSwiftExtension/Images.xcassets/favorite_delete.imageset/favorite_delete@2x.png
--------------------------------------------------------------------------------
/Example/JKSwiftExtension/Images.xcassets/favorite_delete.imageset/favorite_delete@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/JoanKing/JKSwiftExtension/60ed6ddc03b541fe251cb0bbc0cca1fea389a4ac/Example/JKSwiftExtension/Images.xcassets/favorite_delete.imageset/favorite_delete@3x.png
--------------------------------------------------------------------------------
/Example/JKSwiftExtension/Images.xcassets/flower.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "filename" : "flower.png",
5 | "idiom" : "universal",
6 | "scale" : "1x"
7 | },
8 | {
9 | "idiom" : "universal",
10 | "scale" : "2x"
11 | },
12 | {
13 | "idiom" : "universal",
14 | "scale" : "3x"
15 | }
16 | ],
17 | "info" : {
18 | "author" : "xcode",
19 | "version" : 1
20 | }
21 | }
22 |
--------------------------------------------------------------------------------
/Example/JKSwiftExtension/Images.xcassets/flower.imageset/flower.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/JoanKing/JKSwiftExtension/60ed6ddc03b541fe251cb0bbc0cca1fea389a4ac/Example/JKSwiftExtension/Images.xcassets/flower.imageset/flower.png
--------------------------------------------------------------------------------
/Example/JKSwiftExtension/Images.xcassets/flower2.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "filename" : "flower2.png",
5 | "idiom" : "universal",
6 | "scale" : "1x"
7 | },
8 | {
9 | "idiom" : "universal",
10 | "scale" : "2x"
11 | },
12 | {
13 | "idiom" : "universal",
14 | "scale" : "3x"
15 | }
16 | ],
17 | "info" : {
18 | "author" : "xcode",
19 | "version" : 1
20 | }
21 | }
22 |
--------------------------------------------------------------------------------
/Example/JKSwiftExtension/Images.xcassets/flower2.imageset/flower2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/JoanKing/JKSwiftExtension/60ed6ddc03b541fe251cb0bbc0cca1fea389a4ac/Example/JKSwiftExtension/Images.xcassets/flower2.imageset/flower2.png
--------------------------------------------------------------------------------
/Example/JKSwiftExtension/Images.xcassets/go_favorite_selected.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "universal",
5 | "scale" : "1x"
6 | },
7 | {
8 | "filename" : "go_favorite_selected@2x.png",
9 | "idiom" : "universal",
10 | "scale" : "2x"
11 | },
12 | {
13 | "filename" : "go_favorite_selected@3x.png",
14 | "idiom" : "universal",
15 | "scale" : "3x"
16 | }
17 | ],
18 | "info" : {
19 | "author" : "xcode",
20 | "version" : 1
21 | }
22 | }
23 |
--------------------------------------------------------------------------------
/Example/JKSwiftExtension/Images.xcassets/go_favorite_selected.imageset/go_favorite_selected@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/JoanKing/JKSwiftExtension/60ed6ddc03b541fe251cb0bbc0cca1fea389a4ac/Example/JKSwiftExtension/Images.xcassets/go_favorite_selected.imageset/go_favorite_selected@2x.png
--------------------------------------------------------------------------------
/Example/JKSwiftExtension/Images.xcassets/go_favorite_selected.imageset/go_favorite_selected@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/JoanKing/JKSwiftExtension/60ed6ddc03b541fe251cb0bbc0cca1fea389a4ac/Example/JKSwiftExtension/Images.xcassets/go_favorite_selected.imageset/go_favorite_selected@3x.png
--------------------------------------------------------------------------------
/Example/JKSwiftExtension/Images.xcassets/good.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "universal",
5 | "scale" : "1x"
6 | },
7 | {
8 | "filename" : "good@2x.png",
9 | "idiom" : "universal",
10 | "scale" : "2x"
11 | },
12 | {
13 | "filename" : "good@3x.png",
14 | "idiom" : "universal",
15 | "scale" : "3x"
16 | }
17 | ],
18 | "info" : {
19 | "author" : "xcode",
20 | "version" : 1
21 | }
22 | }
23 |
--------------------------------------------------------------------------------
/Example/JKSwiftExtension/Images.xcassets/good.imageset/good@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/JoanKing/JKSwiftExtension/60ed6ddc03b541fe251cb0bbc0cca1fea389a4ac/Example/JKSwiftExtension/Images.xcassets/good.imageset/good@2x.png
--------------------------------------------------------------------------------
/Example/JKSwiftExtension/Images.xcassets/good.imageset/good@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/JoanKing/JKSwiftExtension/60ed6ddc03b541fe251cb0bbc0cca1fea389a4ac/Example/JKSwiftExtension/Images.xcassets/good.imageset/good@3x.png
--------------------------------------------------------------------------------
/Example/JKSwiftExtension/Images.xcassets/good1.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "universal",
5 | "scale" : "1x"
6 | },
7 | {
8 | "filename" : "good1@2x.png",
9 | "idiom" : "universal",
10 | "scale" : "2x"
11 | },
12 | {
13 | "filename" : "good1@3x.png",
14 | "idiom" : "universal",
15 | "scale" : "3x"
16 | }
17 | ],
18 | "info" : {
19 | "author" : "xcode",
20 | "version" : 1
21 | }
22 | }
23 |
--------------------------------------------------------------------------------
/Example/JKSwiftExtension/Images.xcassets/good1.imageset/good1@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/JoanKing/JKSwiftExtension/60ed6ddc03b541fe251cb0bbc0cca1fea389a4ac/Example/JKSwiftExtension/Images.xcassets/good1.imageset/good1@2x.png
--------------------------------------------------------------------------------
/Example/JKSwiftExtension/Images.xcassets/good1.imageset/good1@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/JoanKing/JKSwiftExtension/60ed6ddc03b541fe251cb0bbc0cca1fea389a4ac/Example/JKSwiftExtension/Images.xcassets/good1.imageset/good1@3x.png
--------------------------------------------------------------------------------
/Example/JKSwiftExtension/Images.xcassets/good2.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "universal",
5 | "scale" : "1x"
6 | },
7 | {
8 | "filename" : "good2@2x.png",
9 | "idiom" : "universal",
10 | "scale" : "2x"
11 | },
12 | {
13 | "filename" : "good2@3x.png",
14 | "idiom" : "universal",
15 | "scale" : "3x"
16 | }
17 | ],
18 | "info" : {
19 | "author" : "xcode",
20 | "version" : 1
21 | }
22 | }
23 |
--------------------------------------------------------------------------------
/Example/JKSwiftExtension/Images.xcassets/good2.imageset/good2@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/JoanKing/JKSwiftExtension/60ed6ddc03b541fe251cb0bbc0cca1fea389a4ac/Example/JKSwiftExtension/Images.xcassets/good2.imageset/good2@2x.png
--------------------------------------------------------------------------------
/Example/JKSwiftExtension/Images.xcassets/good2.imageset/good2@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/JoanKing/JKSwiftExtension/60ed6ddc03b541fe251cb0bbc0cca1fea389a4ac/Example/JKSwiftExtension/Images.xcassets/good2.imageset/good2@3x.png
--------------------------------------------------------------------------------
/Example/JKSwiftExtension/Images.xcassets/good3.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "universal",
5 | "scale" : "1x"
6 | },
7 | {
8 | "filename" : "good3@2x.png",
9 | "idiom" : "universal",
10 | "scale" : "2x"
11 | },
12 | {
13 | "filename" : "good3@3x.png",
14 | "idiom" : "universal",
15 | "scale" : "3x"
16 | }
17 | ],
18 | "info" : {
19 | "author" : "xcode",
20 | "version" : 1
21 | }
22 | }
23 |
--------------------------------------------------------------------------------
/Example/JKSwiftExtension/Images.xcassets/good3.imageset/good3@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/JoanKing/JKSwiftExtension/60ed6ddc03b541fe251cb0bbc0cca1fea389a4ac/Example/JKSwiftExtension/Images.xcassets/good3.imageset/good3@2x.png
--------------------------------------------------------------------------------
/Example/JKSwiftExtension/Images.xcassets/good3.imageset/good3@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/JoanKing/JKSwiftExtension/60ed6ddc03b541fe251cb0bbc0cca1fea389a4ac/Example/JKSwiftExtension/Images.xcassets/good3.imageset/good3@3x.png
--------------------------------------------------------------------------------
/Example/JKSwiftExtension/Images.xcassets/good5.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "universal",
5 | "scale" : "1x"
6 | },
7 | {
8 | "filename" : "good5@2x.png",
9 | "idiom" : "universal",
10 | "scale" : "2x"
11 | },
12 | {
13 | "idiom" : "universal",
14 | "scale" : "3x"
15 | }
16 | ],
17 | "info" : {
18 | "author" : "xcode",
19 | "version" : 1
20 | }
21 | }
22 |
--------------------------------------------------------------------------------
/Example/JKSwiftExtension/Images.xcassets/good5.imageset/good5@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/JoanKing/JKSwiftExtension/60ed6ddc03b541fe251cb0bbc0cca1fea389a4ac/Example/JKSwiftExtension/Images.xcassets/good5.imageset/good5@2x.png
--------------------------------------------------------------------------------
/Example/JKSwiftExtension/Images.xcassets/good6.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "universal",
5 | "scale" : "1x"
6 | },
7 | {
8 | "filename" : "good6@2x.png",
9 | "idiom" : "universal",
10 | "scale" : "2x"
11 | },
12 | {
13 | "idiom" : "universal",
14 | "scale" : "3x"
15 | }
16 | ],
17 | "info" : {
18 | "author" : "xcode",
19 | "version" : 1
20 | }
21 | }
22 |
--------------------------------------------------------------------------------
/Example/JKSwiftExtension/Images.xcassets/good6.imageset/good6@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/JoanKing/JKSwiftExtension/60ed6ddc03b541fe251cb0bbc0cca1fea389a4ac/Example/JKSwiftExtension/Images.xcassets/good6.imageset/good6@2x.png
--------------------------------------------------------------------------------
/Example/JKSwiftExtension/Images.xcassets/good7.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "universal",
5 | "scale" : "1x"
6 | },
7 | {
8 | "filename" : "good7@2x.png",
9 | "idiom" : "universal",
10 | "scale" : "2x"
11 | },
12 | {
13 | "idiom" : "universal",
14 | "scale" : "3x"
15 | }
16 | ],
17 | "info" : {
18 | "author" : "xcode",
19 | "version" : 1
20 | }
21 | }
22 |
--------------------------------------------------------------------------------
/Example/JKSwiftExtension/Images.xcassets/good7.imageset/good7@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/JoanKing/JKSwiftExtension/60ed6ddc03b541fe251cb0bbc0cca1fea389a4ac/Example/JKSwiftExtension/Images.xcassets/good7.imageset/good7@2x.png
--------------------------------------------------------------------------------
/Example/JKSwiftExtension/Images.xcassets/good8.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "universal",
5 | "scale" : "1x"
6 | },
7 | {
8 | "filename" : "good8@2x.png",
9 | "idiom" : "universal",
10 | "scale" : "2x"
11 | },
12 | {
13 | "idiom" : "universal",
14 | "scale" : "3x"
15 | }
16 | ],
17 | "info" : {
18 | "author" : "xcode",
19 | "version" : 1
20 | }
21 | }
22 |
--------------------------------------------------------------------------------
/Example/JKSwiftExtension/Images.xcassets/good8.imageset/good8@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/JoanKing/JKSwiftExtension/60ed6ddc03b541fe251cb0bbc0cca1fea389a4ac/Example/JKSwiftExtension/Images.xcassets/good8.imageset/good8@2x.png
--------------------------------------------------------------------------------
/Example/JKSwiftExtension/Images.xcassets/good9.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "universal",
5 | "scale" : "1x"
6 | },
7 | {
8 | "filename" : "good9@2x.png",
9 | "idiom" : "universal",
10 | "scale" : "2x"
11 | },
12 | {
13 | "idiom" : "universal",
14 | "scale" : "3x"
15 | }
16 | ],
17 | "info" : {
18 | "author" : "xcode",
19 | "version" : 1
20 | }
21 | }
22 |
--------------------------------------------------------------------------------
/Example/JKSwiftExtension/Images.xcassets/good9.imageset/good9@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/JoanKing/JKSwiftExtension/60ed6ddc03b541fe251cb0bbc0cca1fea389a4ac/Example/JKSwiftExtension/Images.xcassets/good9.imageset/good9@2x.png
--------------------------------------------------------------------------------
/Example/JKSwiftExtension/Images.xcassets/huaban.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "filename" : "huaban.png",
5 | "idiom" : "universal",
6 | "scale" : "1x"
7 | },
8 | {
9 | "idiom" : "universal",
10 | "scale" : "2x"
11 | },
12 | {
13 | "idiom" : "universal",
14 | "scale" : "3x"
15 | }
16 | ],
17 | "info" : {
18 | "author" : "xcode",
19 | "version" : 1
20 | }
21 | }
22 |
--------------------------------------------------------------------------------
/Example/JKSwiftExtension/Images.xcassets/huaban.imageset/huaban.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/JoanKing/JKSwiftExtension/60ed6ddc03b541fe251cb0bbc0cca1fea389a4ac/Example/JKSwiftExtension/Images.xcassets/huaban.imageset/huaban.png
--------------------------------------------------------------------------------
/Example/JKSwiftExtension/Images.xcassets/ironman.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "filename" : "ironman.png",
5 | "idiom" : "universal",
6 | "scale" : "1x"
7 | },
8 | {
9 | "idiom" : "universal",
10 | "scale" : "2x"
11 | },
12 | {
13 | "idiom" : "universal",
14 | "scale" : "3x"
15 | }
16 | ],
17 | "info" : {
18 | "author" : "xcode",
19 | "version" : 1
20 | }
21 | }
22 |
--------------------------------------------------------------------------------
/Example/JKSwiftExtension/Images.xcassets/ironman.imageset/ironman.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/JoanKing/JKSwiftExtension/60ed6ddc03b541fe251cb0bbc0cca1fea389a4ac/Example/JKSwiftExtension/Images.xcassets/ironman.imageset/ironman.png
--------------------------------------------------------------------------------
/Example/JKSwiftExtension/Images.xcassets/large.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "filename" : "large.png",
5 | "idiom" : "universal",
6 | "scale" : "1x"
7 | },
8 | {
9 | "idiom" : "universal",
10 | "scale" : "2x"
11 | },
12 | {
13 | "idiom" : "universal",
14 | "scale" : "3x"
15 | }
16 | ],
17 | "info" : {
18 | "author" : "xcode",
19 | "version" : 1
20 | }
21 | }
22 |
--------------------------------------------------------------------------------
/Example/JKSwiftExtension/Images.xcassets/large.imageset/large.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/JoanKing/JKSwiftExtension/60ed6ddc03b541fe251cb0bbc0cca1fea389a4ac/Example/JKSwiftExtension/Images.xcassets/large.imageset/large.png
--------------------------------------------------------------------------------
/Example/JKSwiftExtension/Images.xcassets/mark.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "universal",
5 | "scale" : "1x"
6 | },
7 | {
8 | "filename" : "mark@2x.png",
9 | "idiom" : "universal",
10 | "scale" : "2x"
11 | },
12 | {
13 | "filename" : "mark@3x.png",
14 | "idiom" : "universal",
15 | "scale" : "3x"
16 | }
17 | ],
18 | "info" : {
19 | "author" : "xcode",
20 | "version" : 1
21 | }
22 | }
23 |
--------------------------------------------------------------------------------
/Example/JKSwiftExtension/Images.xcassets/mark.imageset/mark@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/JoanKing/JKSwiftExtension/60ed6ddc03b541fe251cb0bbc0cca1fea389a4ac/Example/JKSwiftExtension/Images.xcassets/mark.imageset/mark@2x.png
--------------------------------------------------------------------------------
/Example/JKSwiftExtension/Images.xcassets/mark.imageset/mark@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/JoanKing/JKSwiftExtension/60ed6ddc03b541fe251cb0bbc0cca1fea389a4ac/Example/JKSwiftExtension/Images.xcassets/mark.imageset/mark@3x.png
--------------------------------------------------------------------------------
/Example/JKSwiftExtension/Images.xcassets/mark_highlighted.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "universal",
5 | "scale" : "1x"
6 | },
7 | {
8 | "filename" : "mark_highlighted@2x.png",
9 | "idiom" : "universal",
10 | "scale" : "2x"
11 | },
12 | {
13 | "filename" : "mark_highlighted@3x.png",
14 | "idiom" : "universal",
15 | "scale" : "3x"
16 | }
17 | ],
18 | "info" : {
19 | "author" : "xcode",
20 | "version" : 1
21 | }
22 | }
23 |
--------------------------------------------------------------------------------
/Example/JKSwiftExtension/Images.xcassets/mark_highlighted.imageset/mark_highlighted@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/JoanKing/JKSwiftExtension/60ed6ddc03b541fe251cb0bbc0cca1fea389a4ac/Example/JKSwiftExtension/Images.xcassets/mark_highlighted.imageset/mark_highlighted@2x.png
--------------------------------------------------------------------------------
/Example/JKSwiftExtension/Images.xcassets/mark_highlighted.imageset/mark_highlighted@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/JoanKing/JKSwiftExtension/60ed6ddc03b541fe251cb0bbc0cca1fea389a4ac/Example/JKSwiftExtension/Images.xcassets/mark_highlighted.imageset/mark_highlighted@3x.png
--------------------------------------------------------------------------------
/Example/JKSwiftExtension/Images.xcassets/network_error.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "universal",
5 | "scale" : "1x"
6 | },
7 | {
8 | "filename" : "network_error@2x.png",
9 | "idiom" : "universal",
10 | "scale" : "2x"
11 | },
12 | {
13 | "filename" : "network_error@3x.png",
14 | "idiom" : "universal",
15 | "scale" : "3x"
16 | }
17 | ],
18 | "info" : {
19 | "author" : "xcode",
20 | "version" : 1
21 | }
22 | }
23 |
--------------------------------------------------------------------------------
/Example/JKSwiftExtension/Images.xcassets/network_error.imageset/network_error@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/JoanKing/JKSwiftExtension/60ed6ddc03b541fe251cb0bbc0cca1fea389a4ac/Example/JKSwiftExtension/Images.xcassets/network_error.imageset/network_error@2x.png
--------------------------------------------------------------------------------
/Example/JKSwiftExtension/Images.xcassets/network_error.imageset/network_error@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/JoanKing/JKSwiftExtension/60ed6ddc03b541fe251cb0bbc0cca1fea389a4ac/Example/JKSwiftExtension/Images.xcassets/network_error.imageset/network_error@3x.png
--------------------------------------------------------------------------------
/Example/JKSwiftExtension/Images.xcassets/pika3.dataset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "data" : [
3 | {
4 | "filename" : "pika3.gif",
5 | "idiom" : "universal"
6 | }
7 | ],
8 | "info" : {
9 | "author" : "xcode",
10 | "version" : 1
11 | }
12 | }
13 |
--------------------------------------------------------------------------------
/Example/JKSwiftExtension/Images.xcassets/pika3.dataset/pika3.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/JoanKing/JKSwiftExtension/60ed6ddc03b541fe251cb0bbc0cca1fea389a4ac/Example/JKSwiftExtension/Images.xcassets/pika3.dataset/pika3.gif
--------------------------------------------------------------------------------
/Example/JKSwiftExtension/Images.xcassets/qr_test.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "filename" : "qr_test.png",
5 | "idiom" : "universal",
6 | "scale" : "1x"
7 | },
8 | {
9 | "idiom" : "universal",
10 | "scale" : "2x"
11 | },
12 | {
13 | "idiom" : "universal",
14 | "scale" : "3x"
15 | }
16 | ],
17 | "info" : {
18 | "author" : "xcode",
19 | "version" : 1
20 | }
21 | }
22 |
--------------------------------------------------------------------------------
/Example/JKSwiftExtension/Images.xcassets/qr_test.imageset/qr_test.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/JoanKing/JKSwiftExtension/60ed6ddc03b541fe251cb0bbc0cca1fea389a4ac/Example/JKSwiftExtension/Images.xcassets/qr_test.imageset/qr_test.png
--------------------------------------------------------------------------------
/Example/JKSwiftExtension/Images.xcassets/rank_up.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "universal",
5 | "scale" : "1x"
6 | },
7 | {
8 | "filename" : "rank_up@2x.png",
9 | "idiom" : "universal",
10 | "scale" : "2x"
11 | },
12 | {
13 | "filename" : "rank_up@3x.png",
14 | "idiom" : "universal",
15 | "scale" : "3x"
16 | }
17 | ],
18 | "info" : {
19 | "author" : "xcode",
20 | "version" : 1
21 | }
22 | }
23 |
--------------------------------------------------------------------------------
/Example/JKSwiftExtension/Images.xcassets/rank_up.imageset/rank_up@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/JoanKing/JKSwiftExtension/60ed6ddc03b541fe251cb0bbc0cca1fea389a4ac/Example/JKSwiftExtension/Images.xcassets/rank_up.imageset/rank_up@2x.png
--------------------------------------------------------------------------------
/Example/JKSwiftExtension/Images.xcassets/rank_up.imageset/rank_up@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/JoanKing/JKSwiftExtension/60ed6ddc03b541fe251cb0bbc0cca1fea389a4ac/Example/JKSwiftExtension/Images.xcassets/rank_up.imageset/rank_up@3x.png
--------------------------------------------------------------------------------
/Example/JKSwiftExtension/Images.xcassets/refresh.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "universal",
5 | "scale" : "1x"
6 | },
7 | {
8 | "filename" : "refresh@2x.png",
9 | "idiom" : "universal",
10 | "scale" : "2x"
11 | },
12 | {
13 | "filename" : "refresh@3x.png",
14 | "idiom" : "universal",
15 | "scale" : "3x"
16 | }
17 | ],
18 | "info" : {
19 | "author" : "xcode",
20 | "version" : 1
21 | }
22 | }
23 |
--------------------------------------------------------------------------------
/Example/JKSwiftExtension/Images.xcassets/refresh.imageset/refresh@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/JoanKing/JKSwiftExtension/60ed6ddc03b541fe251cb0bbc0cca1fea389a4ac/Example/JKSwiftExtension/Images.xcassets/refresh.imageset/refresh@2x.png
--------------------------------------------------------------------------------
/Example/JKSwiftExtension/Images.xcassets/refresh.imageset/refresh@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/JoanKing/JKSwiftExtension/60ed6ddc03b541fe251cb0bbc0cca1fea389a4ac/Example/JKSwiftExtension/Images.xcassets/refresh.imageset/refresh@3x.png
--------------------------------------------------------------------------------
/Example/JKSwiftExtension/Images.xcassets/screen_no_content.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "universal",
5 | "scale" : "1x"
6 | },
7 | {
8 | "filename" : "screen_no_content@2x.png",
9 | "idiom" : "universal",
10 | "scale" : "2x"
11 | },
12 | {
13 | "filename" : "screen_no_content@3x.png",
14 | "idiom" : "universal",
15 | "scale" : "3x"
16 | }
17 | ],
18 | "info" : {
19 | "author" : "xcode",
20 | "version" : 1
21 | }
22 | }
23 |
--------------------------------------------------------------------------------
/Example/JKSwiftExtension/Images.xcassets/screen_no_content.imageset/screen_no_content@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/JoanKing/JKSwiftExtension/60ed6ddc03b541fe251cb0bbc0cca1fea389a4ac/Example/JKSwiftExtension/Images.xcassets/screen_no_content.imageset/screen_no_content@2x.png
--------------------------------------------------------------------------------
/Example/JKSwiftExtension/Images.xcassets/screen_no_content.imageset/screen_no_content@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/JoanKing/JKSwiftExtension/60ed6ddc03b541fe251cb0bbc0cca1fea389a4ac/Example/JKSwiftExtension/Images.xcassets/screen_no_content.imageset/screen_no_content@3x.png
--------------------------------------------------------------------------------
/Example/JKSwiftExtension/Images.xcassets/screen_no_network.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "universal",
5 | "scale" : "1x"
6 | },
7 | {
8 | "filename" : "screen_no_network@2x.png",
9 | "idiom" : "universal",
10 | "scale" : "2x"
11 | },
12 | {
13 | "filename" : "screen_no_network@3x.png",
14 | "idiom" : "universal",
15 | "scale" : "3x"
16 | }
17 | ],
18 | "info" : {
19 | "author" : "xcode",
20 | "version" : 1
21 | }
22 | }
23 |
--------------------------------------------------------------------------------
/Example/JKSwiftExtension/Images.xcassets/screen_no_network.imageset/screen_no_network@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/JoanKing/JKSwiftExtension/60ed6ddc03b541fe251cb0bbc0cca1fea389a4ac/Example/JKSwiftExtension/Images.xcassets/screen_no_network.imageset/screen_no_network@2x.png
--------------------------------------------------------------------------------
/Example/JKSwiftExtension/Images.xcassets/screen_no_network.imageset/screen_no_network@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/JoanKing/JKSwiftExtension/60ed6ddc03b541fe251cb0bbc0cca1fea389a4ac/Example/JKSwiftExtension/Images.xcassets/screen_no_network.imageset/screen_no_network@3x.png
--------------------------------------------------------------------------------
/Example/JKSwiftExtension/Images.xcassets/selected_point_animation.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "universal",
5 | "scale" : "1x"
6 | },
7 | {
8 | "filename" : "selected_point_animation@2x.png",
9 | "idiom" : "universal",
10 | "scale" : "2x"
11 | },
12 | {
13 | "filename" : "selected_point_animation@3x.png",
14 | "idiom" : "universal",
15 | "scale" : "3x"
16 | }
17 | ],
18 | "info" : {
19 | "author" : "xcode",
20 | "version" : 1
21 | }
22 | }
23 |
--------------------------------------------------------------------------------
/Example/JKSwiftExtension/Images.xcassets/selected_point_animation.imageset/selected_point_animation@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/JoanKing/JKSwiftExtension/60ed6ddc03b541fe251cb0bbc0cca1fea389a4ac/Example/JKSwiftExtension/Images.xcassets/selected_point_animation.imageset/selected_point_animation@2x.png
--------------------------------------------------------------------------------
/Example/JKSwiftExtension/Images.xcassets/selected_point_animation.imageset/selected_point_animation@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/JoanKing/JKSwiftExtension/60ed6ddc03b541fe251cb0bbc0cca1fea389a4ac/Example/JKSwiftExtension/Images.xcassets/selected_point_animation.imageset/selected_point_animation@3x.png
--------------------------------------------------------------------------------
/Example/JKSwiftExtension/Images.xcassets/selected_point_circle.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "universal",
5 | "scale" : "1x"
6 | },
7 | {
8 | "filename" : "selected_point_circle@2x.png",
9 | "idiom" : "universal",
10 | "scale" : "2x"
11 | },
12 | {
13 | "filename" : "selected_point_circle@3x.png",
14 | "idiom" : "universal",
15 | "scale" : "3x"
16 | }
17 | ],
18 | "info" : {
19 | "author" : "xcode",
20 | "version" : 1
21 | }
22 | }
23 |
--------------------------------------------------------------------------------
/Example/JKSwiftExtension/Images.xcassets/selected_point_circle.imageset/selected_point_circle@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/JoanKing/JKSwiftExtension/60ed6ddc03b541fe251cb0bbc0cca1fea389a4ac/Example/JKSwiftExtension/Images.xcassets/selected_point_circle.imageset/selected_point_circle@2x.png
--------------------------------------------------------------------------------
/Example/JKSwiftExtension/Images.xcassets/selected_point_circle.imageset/selected_point_circle@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/JoanKing/JKSwiftExtension/60ed6ddc03b541fe251cb0bbc0cca1fea389a4ac/Example/JKSwiftExtension/Images.xcassets/selected_point_circle.imageset/selected_point_circle@3x.png
--------------------------------------------------------------------------------
/Example/JKSwiftExtension/Images.xcassets/sender.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "universal",
5 | "scale" : "1x"
6 | },
7 | {
8 | "filename" : "sender@2x.png",
9 | "idiom" : "universal",
10 | "scale" : "2x"
11 | },
12 | {
13 | "filename" : "sender@3x.png",
14 | "idiom" : "universal",
15 | "scale" : "3x"
16 | }
17 | ],
18 | "info" : {
19 | "author" : "xcode",
20 | "version" : 1
21 | }
22 | }
23 |
--------------------------------------------------------------------------------
/Example/JKSwiftExtension/Images.xcassets/sender.imageset/sender@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/JoanKing/JKSwiftExtension/60ed6ddc03b541fe251cb0bbc0cca1fea389a4ac/Example/JKSwiftExtension/Images.xcassets/sender.imageset/sender@2x.png
--------------------------------------------------------------------------------
/Example/JKSwiftExtension/Images.xcassets/sender.imageset/sender@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/JoanKing/JKSwiftExtension/60ed6ddc03b541fe251cb0bbc0cca1fea389a4ac/Example/JKSwiftExtension/Images.xcassets/sender.imageset/sender@3x.png
--------------------------------------------------------------------------------
/Example/JKSwiftExtension/Images.xcassets/tabbar_item_home.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "universal",
5 | "scale" : "1x"
6 | },
7 | {
8 | "appearances" : [
9 | {
10 | "appearance" : "luminosity",
11 | "value" : "dark"
12 | }
13 | ],
14 | "idiom" : "universal",
15 | "scale" : "1x"
16 | },
17 | {
18 | "filename" : "tabbar_item_home@2x.png",
19 | "idiom" : "universal",
20 | "scale" : "2x"
21 | },
22 | {
23 | "appearances" : [
24 | {
25 | "appearance" : "luminosity",
26 | "value" : "dark"
27 | }
28 | ],
29 | "filename" : "tabbar_item_home@2x-1.png",
30 | "idiom" : "universal",
31 | "scale" : "2x"
32 | },
33 | {
34 | "filename" : "tabbar_item_home@3x.png",
35 | "idiom" : "universal",
36 | "scale" : "3x"
37 | },
38 | {
39 | "appearances" : [
40 | {
41 | "appearance" : "luminosity",
42 | "value" : "dark"
43 | }
44 | ],
45 | "filename" : "tabbar_item_home@3x-1.png",
46 | "idiom" : "universal",
47 | "scale" : "3x"
48 | }
49 | ],
50 | "info" : {
51 | "author" : "xcode",
52 | "version" : 1
53 | }
54 | }
55 |
--------------------------------------------------------------------------------
/Example/JKSwiftExtension/Images.xcassets/tabbar_item_home.imageset/tabbar_item_home@2x-1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/JoanKing/JKSwiftExtension/60ed6ddc03b541fe251cb0bbc0cca1fea389a4ac/Example/JKSwiftExtension/Images.xcassets/tabbar_item_home.imageset/tabbar_item_home@2x-1.png
--------------------------------------------------------------------------------
/Example/JKSwiftExtension/Images.xcassets/tabbar_item_home.imageset/tabbar_item_home@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/JoanKing/JKSwiftExtension/60ed6ddc03b541fe251cb0bbc0cca1fea389a4ac/Example/JKSwiftExtension/Images.xcassets/tabbar_item_home.imageset/tabbar_item_home@2x.png
--------------------------------------------------------------------------------
/Example/JKSwiftExtension/Images.xcassets/tabbar_item_home.imageset/tabbar_item_home@3x-1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/JoanKing/JKSwiftExtension/60ed6ddc03b541fe251cb0bbc0cca1fea389a4ac/Example/JKSwiftExtension/Images.xcassets/tabbar_item_home.imageset/tabbar_item_home@3x-1.png
--------------------------------------------------------------------------------
/Example/JKSwiftExtension/Images.xcassets/tabbar_item_home.imageset/tabbar_item_home@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/JoanKing/JKSwiftExtension/60ed6ddc03b541fe251cb0bbc0cca1fea389a4ac/Example/JKSwiftExtension/Images.xcassets/tabbar_item_home.imageset/tabbar_item_home@3x.png
--------------------------------------------------------------------------------
/Example/JKSwiftExtension/Images.xcassets/tabbar_profile.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "universal",
5 | "scale" : "1x"
6 | },
7 | {
8 | "filename" : "tabbar_profile@2x.png",
9 | "idiom" : "universal",
10 | "scale" : "2x"
11 | },
12 | {
13 | "filename" : "tabbar_profile@3x.png",
14 | "idiom" : "universal",
15 | "scale" : "3x"
16 | }
17 | ],
18 | "info" : {
19 | "author" : "xcode",
20 | "version" : 1
21 | }
22 | }
23 |
--------------------------------------------------------------------------------
/Example/JKSwiftExtension/Images.xcassets/tabbar_profile.imageset/tabbar_profile@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/JoanKing/JKSwiftExtension/60ed6ddc03b541fe251cb0bbc0cca1fea389a4ac/Example/JKSwiftExtension/Images.xcassets/tabbar_profile.imageset/tabbar_profile@2x.png
--------------------------------------------------------------------------------
/Example/JKSwiftExtension/Images.xcassets/tabbar_profile.imageset/tabbar_profile@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/JoanKing/JKSwiftExtension/60ed6ddc03b541fe251cb0bbc0cca1fea389a4ac/Example/JKSwiftExtension/Images.xcassets/tabbar_profile.imageset/tabbar_profile@3x.png
--------------------------------------------------------------------------------
/Example/JKSwiftExtension/Images.xcassets/tabbar_profile_selected.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "universal",
5 | "scale" : "1x"
6 | },
7 | {
8 | "filename" : "tabbar_profile_selected@2x.png",
9 | "idiom" : "universal",
10 | "scale" : "2x"
11 | },
12 | {
13 | "filename" : "tabbar_profile_selected@3x.png",
14 | "idiom" : "universal",
15 | "scale" : "3x"
16 | }
17 | ],
18 | "info" : {
19 | "author" : "xcode",
20 | "version" : 1
21 | }
22 | }
23 |
--------------------------------------------------------------------------------
/Example/JKSwiftExtension/Images.xcassets/tabbar_profile_selected.imageset/tabbar_profile_selected@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/JoanKing/JKSwiftExtension/60ed6ddc03b541fe251cb0bbc0cca1fea389a4ac/Example/JKSwiftExtension/Images.xcassets/tabbar_profile_selected.imageset/tabbar_profile_selected@2x.png
--------------------------------------------------------------------------------
/Example/JKSwiftExtension/Images.xcassets/tabbar_profile_selected.imageset/tabbar_profile_selected@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/JoanKing/JKSwiftExtension/60ed6ddc03b541fe251cb0bbc0cca1fea389a4ac/Example/JKSwiftExtension/Images.xcassets/tabbar_profile_selected.imageset/tabbar_profile_selected@3x.png
--------------------------------------------------------------------------------
/Example/JKSwiftExtension/Images.xcassets/testicon.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "filename" : "testicon.png",
5 | "idiom" : "universal",
6 | "scale" : "1x"
7 | },
8 | {
9 | "idiom" : "universal",
10 | "scale" : "2x"
11 | },
12 | {
13 | "idiom" : "universal",
14 | "scale" : "3x"
15 | }
16 | ],
17 | "info" : {
18 | "author" : "xcode",
19 | "version" : 1
20 | }
21 | }
22 |
--------------------------------------------------------------------------------
/Example/JKSwiftExtension/Images.xcassets/testicon.imageset/testicon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/JoanKing/JKSwiftExtension/60ed6ddc03b541fe251cb0bbc0cca1fea389a4ac/Example/JKSwiftExtension/Images.xcassets/testicon.imageset/testicon.png
--------------------------------------------------------------------------------
/Example/JKSwiftExtension/Images.xcassets/tfboy.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "filename" : "tfboy.png",
5 | "idiom" : "universal",
6 | "scale" : "1x"
7 | },
8 | {
9 | "idiom" : "universal",
10 | "scale" : "2x"
11 | },
12 | {
13 | "idiom" : "universal",
14 | "scale" : "3x"
15 | }
16 | ],
17 | "info" : {
18 | "author" : "xcode",
19 | "version" : 1
20 | }
21 | }
22 |
--------------------------------------------------------------------------------
/Example/JKSwiftExtension/Images.xcassets/tfboy.imageset/tfboy.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/JoanKing/JKSwiftExtension/60ed6ddc03b541fe251cb0bbc0cca1fea389a4ac/Example/JKSwiftExtension/Images.xcassets/tfboy.imageset/tfboy.png
--------------------------------------------------------------------------------
/Example/JKSwiftExtension/Images.xcassets/trade_validperiod.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "universal",
5 | "scale" : "1x"
6 | },
7 | {
8 | "filename" : "trade_validperiod@2x.png",
9 | "idiom" : "universal",
10 | "scale" : "2x"
11 | },
12 | {
13 | "filename" : "trade_validperiod@3x.png",
14 | "idiom" : "universal",
15 | "scale" : "3x"
16 | }
17 | ],
18 | "info" : {
19 | "author" : "xcode",
20 | "version" : 1
21 | }
22 | }
23 |
--------------------------------------------------------------------------------
/Example/JKSwiftExtension/Images.xcassets/trade_validperiod.imageset/trade_validperiod@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/JoanKing/JKSwiftExtension/60ed6ddc03b541fe251cb0bbc0cca1fea389a4ac/Example/JKSwiftExtension/Images.xcassets/trade_validperiod.imageset/trade_validperiod@2x.png
--------------------------------------------------------------------------------
/Example/JKSwiftExtension/Images.xcassets/trade_validperiod.imageset/trade_validperiod@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/JoanKing/JKSwiftExtension/60ed6ddc03b541fe251cb0bbc0cca1fea389a4ac/Example/JKSwiftExtension/Images.xcassets/trade_validperiod.imageset/trade_validperiod@3x.png
--------------------------------------------------------------------------------
/Example/JKSwiftExtension/Images.xcassets/trade_validperiod_selected.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "universal",
5 | "scale" : "1x"
6 | },
7 | {
8 | "filename" : "trade_validperiod_selected@2x.png",
9 | "idiom" : "universal",
10 | "scale" : "2x"
11 | },
12 | {
13 | "filename" : "trade_validperiod_selected@3x.png",
14 | "idiom" : "universal",
15 | "scale" : "3x"
16 | }
17 | ],
18 | "info" : {
19 | "author" : "xcode",
20 | "version" : 1
21 | }
22 | }
23 |
--------------------------------------------------------------------------------
/Example/JKSwiftExtension/Images.xcassets/trade_validperiod_selected.imageset/trade_validperiod_selected@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/JoanKing/JKSwiftExtension/60ed6ddc03b541fe251cb0bbc0cca1fea389a4ac/Example/JKSwiftExtension/Images.xcassets/trade_validperiod_selected.imageset/trade_validperiod_selected@2x.png
--------------------------------------------------------------------------------
/Example/JKSwiftExtension/Images.xcassets/trade_validperiod_selected.imageset/trade_validperiod_selected@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/JoanKing/JKSwiftExtension/60ed6ddc03b541fe251cb0bbc0cca1fea389a4ac/Example/JKSwiftExtension/Images.xcassets/trade_validperiod_selected.imageset/trade_validperiod_selected@3x.png
--------------------------------------------------------------------------------
/Example/JKSwiftExtension/Images.xcassets/yy.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "filename" : "yy.png",
5 | "idiom" : "universal",
6 | "scale" : "1x"
7 | },
8 | {
9 | "idiom" : "universal",
10 | "scale" : "2x"
11 | },
12 | {
13 | "idiom" : "universal",
14 | "scale" : "3x"
15 | }
16 | ],
17 | "info" : {
18 | "author" : "xcode",
19 | "version" : 1
20 | }
21 | }
22 |
--------------------------------------------------------------------------------
/Example/JKSwiftExtension/Images.xcassets/yy.imageset/yy.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/JoanKing/JKSwiftExtension/60ed6ddc03b541fe251cb0bbc0cca1fea389a4ac/Example/JKSwiftExtension/Images.xcassets/yy.imageset/yy.png
--------------------------------------------------------------------------------
/Example/JKSwiftExtension/Images.xcassets/特殊配置/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "info" : {
3 | "author" : "xcode",
4 | "version" : 1
5 | }
6 | }
7 |
--------------------------------------------------------------------------------
/Example/JKSwiftExtension/Images.xcassets/特殊配置/special_configuration_off.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "universal",
5 | "scale" : "1x"
6 | },
7 | {
8 | "filename" : "special_configuration_off@2x.png",
9 | "idiom" : "universal",
10 | "scale" : "2x"
11 | },
12 | {
13 | "filename" : "special_configuration_off@3x.png",
14 | "idiom" : "universal",
15 | "scale" : "3x"
16 | }
17 | ],
18 | "info" : {
19 | "author" : "xcode",
20 | "version" : 1
21 | }
22 | }
23 |
--------------------------------------------------------------------------------
/Example/JKSwiftExtension/Images.xcassets/特殊配置/special_configuration_off.imageset/special_configuration_off@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/JoanKing/JKSwiftExtension/60ed6ddc03b541fe251cb0bbc0cca1fea389a4ac/Example/JKSwiftExtension/Images.xcassets/特殊配置/special_configuration_off.imageset/special_configuration_off@2x.png
--------------------------------------------------------------------------------
/Example/JKSwiftExtension/Images.xcassets/特殊配置/special_configuration_off.imageset/special_configuration_off@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/JoanKing/JKSwiftExtension/60ed6ddc03b541fe251cb0bbc0cca1fea389a4ac/Example/JKSwiftExtension/Images.xcassets/特殊配置/special_configuration_off.imageset/special_configuration_off@3x.png
--------------------------------------------------------------------------------
/Example/JKSwiftExtension/Images.xcassets/特殊配置/special_configuration_off_selected.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "universal",
5 | "scale" : "1x"
6 | },
7 | {
8 | "filename" : "special_configuration_off_selected@2x.png",
9 | "idiom" : "universal",
10 | "scale" : "2x"
11 | },
12 | {
13 | "filename" : "special_configuration_off_selected@3x.png",
14 | "idiom" : "universal",
15 | "scale" : "3x"
16 | }
17 | ],
18 | "info" : {
19 | "author" : "xcode",
20 | "version" : 1
21 | }
22 | }
23 |
--------------------------------------------------------------------------------
/Example/JKSwiftExtension/Images.xcassets/特殊配置/special_configuration_off_selected.imageset/special_configuration_off_selected@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/JoanKing/JKSwiftExtension/60ed6ddc03b541fe251cb0bbc0cca1fea389a4ac/Example/JKSwiftExtension/Images.xcassets/特殊配置/special_configuration_off_selected.imageset/special_configuration_off_selected@2x.png
--------------------------------------------------------------------------------
/Example/JKSwiftExtension/Images.xcassets/特殊配置/special_configuration_off_selected.imageset/special_configuration_off_selected@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/JoanKing/JKSwiftExtension/60ed6ddc03b541fe251cb0bbc0cca1fea389a4ac/Example/JKSwiftExtension/Images.xcassets/特殊配置/special_configuration_off_selected.imageset/special_configuration_off_selected@3x.png
--------------------------------------------------------------------------------
/Example/JKSwiftExtension/Images.xcassets/特殊配置/special_configuration_on.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "universal",
5 | "scale" : "1x"
6 | },
7 | {
8 | "filename" : "special_configuration_on@2x.png",
9 | "idiom" : "universal",
10 | "scale" : "2x"
11 | },
12 | {
13 | "filename" : "special_configuration_on@3x.png",
14 | "idiom" : "universal",
15 | "scale" : "3x"
16 | }
17 | ],
18 | "info" : {
19 | "author" : "xcode",
20 | "version" : 1
21 | }
22 | }
23 |
--------------------------------------------------------------------------------
/Example/JKSwiftExtension/Images.xcassets/特殊配置/special_configuration_on.imageset/special_configuration_on@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/JoanKing/JKSwiftExtension/60ed6ddc03b541fe251cb0bbc0cca1fea389a4ac/Example/JKSwiftExtension/Images.xcassets/特殊配置/special_configuration_on.imageset/special_configuration_on@2x.png
--------------------------------------------------------------------------------
/Example/JKSwiftExtension/Images.xcassets/特殊配置/special_configuration_on.imageset/special_configuration_on@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/JoanKing/JKSwiftExtension/60ed6ddc03b541fe251cb0bbc0cca1fea389a4ac/Example/JKSwiftExtension/Images.xcassets/特殊配置/special_configuration_on.imageset/special_configuration_on@3x.png
--------------------------------------------------------------------------------
/Example/JKSwiftExtension/Images.xcassets/特殊配置/special_configuration_on_selected.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "universal",
5 | "scale" : "1x"
6 | },
7 | {
8 | "filename" : "special_configuration_on_selected@2x.png",
9 | "idiom" : "universal",
10 | "scale" : "2x"
11 | },
12 | {
13 | "filename" : "special_configuration_on_selected@3x.png",
14 | "idiom" : "universal",
15 | "scale" : "3x"
16 | }
17 | ],
18 | "info" : {
19 | "author" : "xcode",
20 | "version" : 1
21 | }
22 | }
23 |
--------------------------------------------------------------------------------
/Example/JKSwiftExtension/Images.xcassets/特殊配置/special_configuration_on_selected.imageset/special_configuration_on_selected@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/JoanKing/JKSwiftExtension/60ed6ddc03b541fe251cb0bbc0cca1fea389a4ac/Example/JKSwiftExtension/Images.xcassets/特殊配置/special_configuration_on_selected.imageset/special_configuration_on_selected@2x.png
--------------------------------------------------------------------------------
/Example/JKSwiftExtension/Images.xcassets/特殊配置/special_configuration_on_selected.imageset/special_configuration_on_selected@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/JoanKing/JKSwiftExtension/60ed6ddc03b541fe251cb0bbc0cca1fea389a4ac/Example/JKSwiftExtension/Images.xcassets/特殊配置/special_configuration_on_selected.imageset/special_configuration_on_selected@3x.png
--------------------------------------------------------------------------------
/Example/JKSwiftExtension/JKBaseKit.bundle/JKBank.plist:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/JoanKing/JKSwiftExtension/60ed6ddc03b541fe251cb0bbc0cca1fea389a4ac/Example/JKSwiftExtension/JKBaseKit.bundle/JKBank.plist
--------------------------------------------------------------------------------
/Example/JKSwiftExtension/JKBaseKit.bundle/icon_scan@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/JoanKing/JKSwiftExtension/60ed6ddc03b541fe251cb0bbc0cca1fea389a4ac/Example/JKSwiftExtension/JKBaseKit.bundle/icon_scan@2x.png
--------------------------------------------------------------------------------
/Example/JKSwiftExtension/JKBaseKit.bundle/icon_scan@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/JoanKing/JKSwiftExtension/60ed6ddc03b541fe251cb0bbc0cca1fea389a4ac/Example/JKSwiftExtension/JKBaseKit.bundle/icon_scan@3x.png
--------------------------------------------------------------------------------
/Example/JKSwiftExtension/JKSwiftExtension_Example-Bridging-Header.h:
--------------------------------------------------------------------------------
1 | //
2 | // Use this file to import your target's public headers that you would like to expose to Swift.
3 | //
4 |
5 | #import
6 | #import
7 |
8 | #import "NotificationTetstViewController.h"
9 |
--------------------------------------------------------------------------------
/Example/JKSwiftExtension/Persons.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | Name
6 | 王小二
7 | age
8 | 22
9 | height
10 | 178
11 |
12 |
13 |
--------------------------------------------------------------------------------
/Example/JKSwiftExtension/PrefixHeader.pch:
--------------------------------------------------------------------------------
1 | //
2 | // PrefixHeader.pch
3 | // JKSwiftExtension_Example
4 | //
5 | // Created by 王冲 on 2022/6/28.
6 | // Copyright © 2022 CocoaPods. All rights reserved.
7 | //
8 |
9 | #ifndef PrefixHeader_pch
10 | #define PrefixHeader_pch
11 |
12 | #import
13 |
14 | #endif /* PrefixHeader_pch */
15 |
--------------------------------------------------------------------------------
/Example/JKSwiftExtension/PrivacyInfo.xcprivacy:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | NSPrivacyAccessedAPITypes
6 |
7 |
8 | NSPrivacyAccessedAPITypeReasons
9 |
10 | 35F9.1
11 |
12 | NSPrivacyAccessedAPIType
13 | NSPrivacyAccessedAPICategorySystemBootTime
14 |
15 |
16 |
17 |
18 |
--------------------------------------------------------------------------------
/Example/JKSwiftExtension/StoryboardTest/StoryboardTest1ViewController.swift:
--------------------------------------------------------------------------------
1 | //
2 | // StoryboardTest1ViewController.swift
3 | // JKSwiftExtension_Example
4 | //
5 | // Created by IronMan on 2020/12/16.
6 | // Copyright © 2020 CocoaPods. All rights reserved.
7 | //
8 |
9 | import UIKit
10 |
11 | class StoryboardTest1ViewController: UIViewController {
12 |
13 | override func viewDidLoad() {
14 | super.viewDidLoad()
15 |
16 | // Do any additional setup after loading the view.
17 | }
18 |
19 |
20 | /*
21 | // MARK: - Navigation
22 |
23 | // In a storyboard-based application, you will often want to do a little preparation before navigation
24 | override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
25 | // Get the new view controller using segue.destination.
26 | // Pass the selected object to the new view controller.
27 | }
28 | */
29 |
30 | }
31 |
--------------------------------------------------------------------------------
/Example/JKSwiftExtension/TestFile/Controller/BleViewController.swift:
--------------------------------------------------------------------------------
1 | //
2 | // BleViewController.swift
3 | // JKSwiftExtension_Example
4 | //
5 | // Created by 王冲 on 2023/6/19.
6 | // Copyright © 2023 CocoaPods. All rights reserved.
7 | //
8 |
9 | import UIKit
10 |
11 | class BleViewController: BaseViewController {
12 |
13 | override func viewDidLoad() {
14 | super.viewDidLoad()
15 |
16 | // 1100000 : 96
17 | // 100000 0x20 101
18 | let value1 = (0b0000101000 & (0b11 << 8)) >> 8
19 | let value2 = (0b0100101000 & (0b11 << 8)) >> 8
20 | let value3 = (0b1000101000 & (0b11 << 8)) >> 8
21 | let value4 = (0b1100101000 & (0b11 << 8)) >> 8
22 | debugPrint("value1: \(value1) value2: \(value2) value3: \(value3) value4: \(value4)")
23 |
24 | let param: [String: Any] = ["test": false]
25 | if let test = param["test"] as? Bool {
26 | debugPrint("类型判断✅:\(test)")
27 | } else {
28 | debugPrint("类型判断❎")
29 | }
30 | }
31 | }
32 |
--------------------------------------------------------------------------------
/Example/JKSwiftExtension/TestFile/Controller/NineViewController.swift:
--------------------------------------------------------------------------------
1 | //
2 | // NineViewController.swift
3 | // JKSwiftExtension_Example
4 | //
5 | // Created by IronMan on 2021/10/11.
6 | // Copyright © 2021 CocoaPods. All rights reserved.
7 | //
8 |
9 | import UIKit
10 |
11 | class NineViewController: UIViewController {
12 |
13 | override func viewDidLoad() {
14 | super.viewDidLoad()
15 |
16 | self.view.jk.gradientColor(.vertical, [UIColor.brown.cgColor, UIColor.green.cgColor])
17 | }
18 | }
19 |
--------------------------------------------------------------------------------
/Example/JKSwiftExtension/TestFile/Controller/Notification+Extension.swift:
--------------------------------------------------------------------------------
1 | //
2 | // Notification+Extension.swift
3 | // JKSwiftExtension_Example
4 | //
5 | // Created by IronMan on 2020/9/25.
6 | // Copyright © 2020 CocoaPods. All rights reserved.
7 | //
8 |
9 | import UIKit
10 |
11 | extension Notification.Name {
12 |
13 | static let FBTradeHomeListDataNotification = Notification.Name(rawValue: "FBTradeHomeListDataNotification")
14 | }
15 |
--------------------------------------------------------------------------------
/Example/JKSwiftExtension/TestFile/Controller/NotificationTetstViewController.h:
--------------------------------------------------------------------------------
1 | //
2 | // NotificationTetstViewController.h
3 | // JKSwiftExtension_Example
4 | //
5 | // Created by 王冲 on 2022/3/22.
6 | // Copyright © 2022 CocoaPods. All rights reserved.
7 | //
8 |
9 | #import
10 |
11 | NS_ASSUME_NONNULL_BEGIN
12 |
13 | @interface NotificationTetstViewController : UIViewController
14 |
15 | @end
16 |
17 | NS_ASSUME_NONNULL_END
18 |
--------------------------------------------------------------------------------
/Example/JKSwiftExtension/TestFile/Controller/PresetntOneViewController.swift:
--------------------------------------------------------------------------------
1 | //
2 | // PresetntOneViewController.swift
3 | // JKSwiftExtension_Example
4 | //
5 | // Created by 王冲 on 2022/9/24.
6 | // Copyright © 2022 CocoaPods. All rights reserved.
7 | //
8 |
9 | import UIKit
10 |
11 | class PresetntOneViewController: UIViewController {
12 |
13 | override func viewDidLoad() {
14 | super.viewDidLoad()
15 | self.title = "One"
16 | self.view.backgroundColor = .brown
17 | }
18 |
19 | override func touchesBegan(_ touches: Set, with event: UIEvent?) {
20 |
21 | let vc = UINavigationController(rootViewController: PresetntTwoViewController())
22 | vc.modalPresentationStyle = .fullScreen
23 | // 渐变出来
24 | vc.modalTransitionStyle = .crossDissolve
25 | self.present(vc, animated: true, completion: nil)
26 | }
27 | }
28 |
--------------------------------------------------------------------------------
/Example/JKSwiftExtension/TestFile/Controller/PresetntThreeViewController.swift:
--------------------------------------------------------------------------------
1 | //
2 | // PresetntThreeViewController.swift
3 | // JKSwiftExtension_Example
4 | //
5 | // Created by 王冲 on 2022/9/24.
6 | // Copyright © 2022 CocoaPods. All rights reserved.
7 | //
8 |
9 | import UIKit
10 |
11 | class PresetntThreeViewController: UIViewController {
12 |
13 | override func viewDidLoad() {
14 | super.viewDidLoad()
15 | self.title = "Three"
16 | self.view.backgroundColor = .brown
17 | }
18 |
19 | override func touchesBegan(_ touches: Set, with event: UIEvent?) {
20 |
21 | let vc = UINavigationController(rootViewController: PresetntFourViewController())
22 | vc.modalPresentationStyle = .fullScreen
23 | // 渐变出来
24 | vc.modalTransitionStyle = .crossDissolve
25 | self.present(vc, animated: true, completion: nil)
26 | }
27 | }
28 |
--------------------------------------------------------------------------------
/Example/JKSwiftExtension/TestFile/Controller/PresetntTwoViewController.swift:
--------------------------------------------------------------------------------
1 | //
2 | // PresetntTwoViewController.swift
3 | // JKSwiftExtension_Example
4 | //
5 | // Created by 王冲 on 2022/9/24.
6 | // Copyright © 2022 CocoaPods. All rights reserved.
7 | //
8 |
9 | import UIKit
10 |
11 | class PresetntTwoViewController: UIViewController {
12 |
13 | override func viewDidLoad() {
14 | super.viewDidLoad()
15 | self.title = "Two"
16 | self.view.backgroundColor = .brown
17 | }
18 |
19 | override func touchesBegan(_ touches: Set, with event: UIEvent?) {
20 |
21 | let vc = UINavigationController(rootViewController: PresetntThreeViewController())
22 | vc.modalPresentationStyle = .fullScreen
23 | // 渐变出来
24 | vc.modalTransitionStyle = .crossDissolve
25 | self.present(vc, animated: true, completion: nil)
26 | }
27 | }
28 |
--------------------------------------------------------------------------------
/Example/JKSwiftExtension/TestFile/Controller/ProfileViewController.swift:
--------------------------------------------------------------------------------
1 | //
2 | // ProfileViewController.swift
3 | // JKSwiftExtension_Example
4 | //
5 | // Created by IronMan on 2022/2/15.
6 | // Copyright © 2022 CocoaPods. All rights reserved.
7 | //
8 |
9 | import UIKit
10 |
11 | class ProfileViewController: UIViewController {
12 |
13 | override func viewDidLoad() {
14 | super.viewDidLoad()
15 |
16 | self.view.backgroundColor = .cBackViewColor
17 |
18 | let person = Person()
19 | person.addObserver(self, forKeyPath: "age", options: [.old, .new], context: nil)
20 | // 1、使用setter方法改变值KVO才会生效
21 | person.age = 2
22 | // 2、通过KVC改变value
23 | person.setValue(5, forKey: "age")
24 | // 3、手动触发KVO
25 | // person.willChangeValue(forKey: "age")
26 | debugPrint("----------")
27 | person.addValue()
28 | // person.didChangeValue(forKey: "age")
29 | }
30 |
31 | deinit {
32 | debugPrint("----------")
33 | }
34 |
35 | override func observeValue(forKeyPath keyPath: String?, of object: Any?, change: [NSKeyValueChangeKey : Any]?, context: UnsafeMutableRawPointer?) {
36 | debugPrint(keyPath ?? "")
37 | if let old = change?[NSKeyValueChangeKey.oldKey] {
38 | debugPrint(old)
39 | }
40 | if let new = change?[NSKeyValueChangeKey.newKey] {
41 | debugPrint(new)
42 | }
43 | }
44 | }
45 |
--------------------------------------------------------------------------------
/Example/JKSwiftExtension/TestFile/Controller/TouchViewController.swift:
--------------------------------------------------------------------------------
1 | //
2 | // TouchViewController.swift
3 | // JKSwiftExtension_Example
4 | //
5 | // Created by IronMan on 2020/11/19.
6 | // Copyright © 2020 CocoaPods. All rights reserved.
7 | //
8 |
9 | import UIKit
10 |
11 | class TouchViewController: UIViewController {
12 |
13 | override func viewDidLoad() {
14 | super.viewDidLoad()
15 |
16 | self.view.backgroundColor = .red
17 |
18 | let greenView = UIView(frame: CGRect(x: 100, y: 150, width: 200, height: 200))
19 | greenView.backgroundColor = .green
20 | self.view.addSubview(greenView)
21 |
22 | let yellowView = JKTouchView(frame: CGRect(x: 30, y: 30, width: 140, height: 140))
23 | yellowView.backgroundColor = .yellow
24 | greenView.addSubview(yellowView)
25 |
26 | let tap = UITapGestureRecognizer(target: self, action: #selector(click1))
27 | yellowView.addGestureRecognizer(tap)
28 |
29 | }
30 |
31 | @objc func click1() {
32 | JKPrint("---------")
33 | }
34 | }
35 |
--------------------------------------------------------------------------------
/Example/JKSwiftExtension/TestFile/Extension/Image+Photo.swift:
--------------------------------------------------------------------------------
1 | //
2 | // Image+Photo.swift
3 | // JKSwiftExtension_Example
4 | //
5 | // Created by chongwang on 2024/7/5.
6 | // Copyright © 2024 CocoaPods. All rights reserved.
7 | //
8 |
9 | import UIKit
10 | import Photos
11 |
12 | // MARK: - 一、基本的扩展
13 | extension UIImage {
14 |
15 | // MARK: 1.15、保存图片到相册(建议使用这个)
16 | /// 保存图片到相册
17 | func savePhotosImageToAlbum(completion: @escaping ((Bool, Error?) -> Void)) {
18 | PHPhotoLibrary.shared().performChanges {
19 | PHAssetChangeRequest.creationRequestForAsset(from: self)
20 | } completionHandler: { (isSuccess: Bool, error: Error?) in
21 | completion(isSuccess, error)
22 | }
23 | }
24 | }
25 |
--------------------------------------------------------------------------------
/Example/JKSwiftExtension/TestFile/Extension/UIApplication+Photo.swift:
--------------------------------------------------------------------------------
1 | //
2 | // UIApplication+Photo.swift
3 | // JKSwiftExtension_Example
4 | //
5 | // Created by chongwang on 2024/7/6.
6 | // Copyright © 2024 CocoaPods. All rights reserved.
7 | //
8 |
9 | import UIKit
10 | import Photos
11 |
12 | // MARK: - 二、APP权限的检测
13 | enum JKAppPermissionType {
14 | // 照相机
15 | case camera
16 | // 相册
17 | case album
18 | // 麦克风
19 | case audio
20 | // 定位
21 | case location
22 | }
23 | extension UIApplication {
24 |
25 | // MARK: 2.1、判断是否拥有权限,目前支持 照相机、相册、麦克风、定位,提示:这里判断是这些权限有没有被用户手动关闭
26 | /// 判断是否拥有权限,目前支持 照相机、相册、麦克风、定位,提示:这里判断是这些权限有没有被用户手动关闭
27 | /// - Parameter permission: 权限的类型
28 | /// - Returns: 结果
29 | static func isOpenPermission(_ permission: JKAppPermissionType) -> Bool {
30 |
31 | var result: Bool = true
32 | if permission == .camera || permission == .audio {
33 | // 是否开启相机和麦克风权限
34 | let authStatus = AVCaptureDevice.authorizationStatus(for: permission == .camera ? .video : .audio)
35 | result = authStatus != .restricted && authStatus != .denied
36 | } else if permission == .album {
37 | // 是否开启相册权限
38 | let authStatus = PHPhotoLibrary.authorizationStatus()
39 | result = authStatus != .restricted && authStatus != .denied
40 | } else if permission == .location {
41 | // 是否开启定位权限
42 | let authStatus = CLLocationManager.authorizationStatus()
43 | return authStatus != .restricted && authStatus != .denied
44 | }
45 | return result
46 | }
47 | }
48 |
--------------------------------------------------------------------------------
/Example/JKSwiftExtension/TestFile/FiveViewController.swift:
--------------------------------------------------------------------------------
1 | //
2 | // FiveViewController.swift
3 | // JKSwiftExtension_Example
4 | //
5 | // Created by IronMan on 2020/11/11.
6 | // Copyright © 2020 CocoaPods. All rights reserved.
7 | //
8 |
9 | import UIKit
10 |
11 | class FiveViewController: UIViewController {
12 |
13 | override func viewDidLoad() {
14 | super.viewDidLoad()
15 |
16 | self.title = "Five"
17 | self.edgesForExtendedLayout = []
18 | self.view.backgroundColor = UIColor.randomColor
19 | }
20 |
21 | override func touchesBegan(_ touches: Set, with event: UIEvent?) {
22 | self.navigationController?.pushViewController(SixViewController(), animated: true)
23 | }
24 | }
25 |
--------------------------------------------------------------------------------
/Example/JKSwiftExtension/TestFile/FourViewController.swift:
--------------------------------------------------------------------------------
1 | //
2 | // FourViewController.swift
3 | // JKSwiftExtension_Example
4 | //
5 | // Created by IronMan on 2020/11/11.
6 | // Copyright © 2020 CocoaPods. All rights reserved.
7 | //
8 |
9 | import UIKit
10 |
11 | class FourViewController: UIViewController {
12 |
13 | override func viewDidLoad() {
14 | super.viewDidLoad()
15 |
16 | self.title = "Four"
17 | self.edgesForExtendedLayout = []
18 | self.view.backgroundColor = UIColor.randomColor
19 | }
20 |
21 | override func touchesBegan(_ touches: Set, with event: UIEvent?) {
22 | self.navigationController?.pushViewController(FiveViewController(), animated: true)
23 | }
24 | }
25 |
--------------------------------------------------------------------------------
/Example/JKSwiftExtension/TestFile/Notification+Extension.swift:
--------------------------------------------------------------------------------
1 | //
2 | // Notification+Extension.swift
3 | // JKSwiftExtension_Example
4 | //
5 | // Created by IronMan on 2020/9/25.
6 | // Copyright © 2020 CocoaPods. All rights reserved.
7 | //
8 |
9 | import UIKit
10 |
11 | extension Notification.Name {
12 |
13 | static let FBTradeHomeListDataNotification = Notification.Name(rawValue: "FBTradeHomeListDataNotification")
14 | }
15 |
--------------------------------------------------------------------------------
/Example/JKSwiftExtension/TestFile/View/JKTouchView.swift:
--------------------------------------------------------------------------------
1 | //
2 | // JKTouchView.swift
3 | // JKSwiftExtension_Example
4 | //
5 | // Created by IronMan on 2020/11/19.
6 | // Copyright © 2020 CocoaPods. All rights reserved.
7 | //
8 |
9 | import UIKit
10 |
11 | class JKTouchView: UIView {
12 |
13 | /// 范围 <= 0
14 | var minX: CGFloat = 0
15 | /// 范围 <= 0
16 | var minY: CGFloat = 0
17 | /// 范围 >= 0
18 | var maxX: CGFloat = 0
19 | /// 范围 >= 0
20 | var maxY: CGFloat = 0
21 |
22 | override func hitTest(_ point: CGPoint, with event: UIEvent?) -> UIView? {
23 |
24 | guard point.x <= maxX && point.x >= minX + self.frame.size.width && point.y <= maxY + self.frame.size.height && point.y >= minY else {
25 | return super.hitTest(point, with: event)
26 | }
27 | return super.hitTest(CGPoint(x: 0, y: 0), with: event)
28 | }
29 | }
30 |
--------------------------------------------------------------------------------
/Example/JKSwiftExtension/TestFile/View/UIAlertController+Extension1.swift:
--------------------------------------------------------------------------------
1 | //
2 | // UIAlertController+Extension1.swift
3 | // JKSwiftExtension_Example
4 | //
5 | // Created by 王冲 on 2022/8/24.
6 | // Copyright © 2022 CocoaPods. All rights reserved.
7 | //
8 |
9 | import Foundation
10 | import UIKit
11 | import JKSwiftExtension
12 | @objc public extension UIAlertController {
13 |
14 | private var subView5: UIView? {
15 | guard let subView1: UIView = self.view.subviews.first,
16 | let subView2: UIView = subView1.subviews.first,
17 | let subView3: UIView = subView2.subviews.first,
18 | let subView4: UIView = subView3.subviews.first,
19 | let subView5: UIView = subView4.subviews.first
20 | else { return nil }
21 | return subView5
22 | }
23 |
24 | var titleLabel: UILabel? {
25 | guard let _ = self.title,
26 | let subView5 = subView5,
27 | subView5.subviews.count > 2,
28 | let label = subView5.subviews[1] as? UILabel
29 | else { return nil }
30 | return label
31 | }
32 |
33 | var messageLabel: UILabel? {
34 | guard let subView5 = subView5
35 | else { return nil }
36 | let messageLabelIndex = self.title == nil ? 1 : 2
37 | if subView5.subviews.count > messageLabelIndex,
38 | let label = subView5.subviews[messageLabelIndex] as? UILabel
39 | {
40 | return label
41 | }
42 | return nil
43 | }
44 | }
45 |
--------------------------------------------------------------------------------
/Example/JKSwiftExtension/baby.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/JoanKing/JKSwiftExtension/60ed6ddc03b541fe251cb0bbc0cca1fea389a4ac/Example/JKSwiftExtension/baby.gif
--------------------------------------------------------------------------------
/Example/JKSwiftExtension/en.lproj/Localizable.strings:
--------------------------------------------------------------------------------
1 | /*
2 | Localizable.strings
3 | JKSwiftExtension
4 |
5 | Created by chongwang on 2024/4/26.
6 | Copyright © 2024 CocoaPods. All rights reserved.
7 | */
8 |
9 | "Text_01" = "banana";
10 |
--------------------------------------------------------------------------------
/Example/JKSwiftExtension/font/din-2014_bold-italic.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/JoanKing/JKSwiftExtension/60ed6ddc03b541fe251cb0bbc0cca1fea389a4ac/Example/JKSwiftExtension/font/din-2014_bold-italic.ttf
--------------------------------------------------------------------------------
/Example/JKSwiftExtension/font/fanghei.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/JoanKing/JKSwiftExtension/60ed6ddc03b541fe251cb0bbc0cca1fea389a4ac/Example/JKSwiftExtension/font/fanghei.ttf
--------------------------------------------------------------------------------
/Example/JKSwiftExtension/font/niu1.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/JoanKing/JKSwiftExtension/60ed6ddc03b541fe251cb0bbc0cca1fea389a4ac/Example/JKSwiftExtension/font/niu1.ttf
--------------------------------------------------------------------------------
/Example/JKSwiftExtension/girl.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/JoanKing/JKSwiftExtension/60ed6ddc03b541fe251cb0bbc0cca1fea389a4ac/Example/JKSwiftExtension/girl.jpg
--------------------------------------------------------------------------------
/Example/JKSwiftExtension/herf.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | title
6 |
7 |
8 |
9 |
10 | go to app
11 |
12 |
13 |
14 |
--------------------------------------------------------------------------------
/Example/JKSwiftExtension/huaban1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/JoanKing/JKSwiftExtension/60ed6ddc03b541fe251cb0bbc0cca1fea389a4ac/Example/JKSwiftExtension/huaban1.png
--------------------------------------------------------------------------------
/Example/JKSwiftExtension/mebubble@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/JoanKing/JKSwiftExtension/60ed6ddc03b541fe251cb0bbc0cca1fea389a4ac/Example/JKSwiftExtension/mebubble@2x.png
--------------------------------------------------------------------------------
/Example/JKSwiftExtension/pika2.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/JoanKing/JKSwiftExtension/60ed6ddc03b541fe251cb0bbc0cca1fea389a4ac/Example/JKSwiftExtension/pika2.gif
--------------------------------------------------------------------------------
/Example/JKSwiftExtension/testFile.text:
--------------------------------------------------------------------------------
1 | 我是在项目中的文件
2 |
3 |
--------------------------------------------------------------------------------
/Example/JKSwiftExtension/testicon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/JoanKing/JKSwiftExtension/60ed6ddc03b541fe251cb0bbc0cca1fea389a4ac/Example/JKSwiftExtension/testicon.png
--------------------------------------------------------------------------------
/Example/JKSwiftExtension/yoububble@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/JoanKing/JKSwiftExtension/60ed6ddc03b541fe251cb0bbc0cca1fea389a4ac/Example/JKSwiftExtension/yoububble@2x.png
--------------------------------------------------------------------------------
/Example/JKSwiftExtension/zh-Hans.lproj/LaunchScreen.strings:
--------------------------------------------------------------------------------
1 |
2 | /* Class = "UILabel"; text = " Copyright (c) 2015 CocoaPods. All rights reserved."; ObjectID = "8ie-xW-0ye"; */
3 | "8ie-xW-0ye.text" = " Copyright (c) 2015 CocoaPods. All rights reserved.";
4 |
5 | /* Class = "UILabel"; text = "JKSwiftExtension"; ObjectID = "kId-c2-rCX"; */
6 | "kId-c2-rCX.text" = "JKSwiftExtension";
7 |
--------------------------------------------------------------------------------
/Example/JKSwiftExtension/zh-Hans.lproj/Localizable.strings:
--------------------------------------------------------------------------------
1 | /*
2 | Localizable.strings
3 | JKSwiftExtension
4 |
5 | Created by chongwang on 2024/4/26.
6 | Copyright © 2024 CocoaPods. All rights reserved.
7 | */
8 |
9 | "Text_01" = "香蕉";
10 |
--------------------------------------------------------------------------------
/Example/JKSwiftExtension/zh-Hans.lproj/Main.strings:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/Example/Podfile:
--------------------------------------------------------------------------------
1 | platform :ios, '13.0'
2 | use_frameworks!
3 | target 'JKSwiftExtension_Example' do
4 | pod 'JKSwiftExtension', :path => '../'
5 |
6 | pod 'SnapKit'
7 | # 卡顿检测
8 | # pod 'GDPerformanceView-Swift', '~> 2.1.1', :configurations => ['Debug']
9 |
10 | end
11 |
--------------------------------------------------------------------------------
/Example/Podfile.lock:
--------------------------------------------------------------------------------
1 | PODS:
2 | - JKSwiftExtension (2.7.3)
3 | - SnapKit (5.7.1)
4 |
5 | DEPENDENCIES:
6 | - JKSwiftExtension (from `../`)
7 | - SnapKit
8 |
9 | SPEC REPOS:
10 | trunk:
11 | - SnapKit
12 |
13 | EXTERNAL SOURCES:
14 | JKSwiftExtension:
15 | :path: "../"
16 |
17 | SPEC CHECKSUMS:
18 | JKSwiftExtension: a9c05eb53807993fc4cc257ec79358c042a02a8c
19 | SnapKit: d612e99e678a2d3b95bf60b0705ed0a35c03484a
20 |
21 | PODFILE CHECKSUM: cc584c186fef3380df7edbb3c8fd21a180fb5eae
22 |
23 | COCOAPODS: 1.16.2
24 |
--------------------------------------------------------------------------------
/Example/Pods/Local Podspecs/JKSwiftExtension.podspec.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "JKSwiftExtension",
3 | "version": "2.7.3",
4 | "summary": "Swift版本的一个扩展",
5 | "description": "这是Swift版本扩展的一个详细的使用,可以参考里面的用法",
6 | "homepage": "https://github.com/JoanKing/JKSwiftExtension",
7 | "license": {
8 | "type": "MIT",
9 | "file": "LICENSE"
10 | },
11 | "authors": {
12 | "JoanKing": "jkironman@163.com"
13 | },
14 | "social_media_url": "https://github.com/JoanKing",
15 | "source": {
16 | "git": "https://github.com/JoanKing/JKSwiftExtension.git",
17 | "tag": "2.7.3"
18 | },
19 | "platforms": {
20 | "ios": "13.0"
21 | },
22 | "swift_versions": "5.0",
23 | "requires_arc": true,
24 | "source_files": "Sources/Classes/**/*",
25 | "resource_bundles": {
26 | "JKSwiftExtension": [
27 | "Sources/Assets/*.png"
28 | ]
29 | },
30 | "swift_version": "5.0"
31 | }
32 |
--------------------------------------------------------------------------------
/Example/Pods/Manifest.lock:
--------------------------------------------------------------------------------
1 | PODS:
2 | - JKSwiftExtension (2.7.3)
3 | - SnapKit (5.7.1)
4 |
5 | DEPENDENCIES:
6 | - JKSwiftExtension (from `../`)
7 | - SnapKit
8 |
9 | SPEC REPOS:
10 | trunk:
11 | - SnapKit
12 |
13 | EXTERNAL SOURCES:
14 | JKSwiftExtension:
15 | :path: "../"
16 |
17 | SPEC CHECKSUMS:
18 | JKSwiftExtension: a9c05eb53807993fc4cc257ec79358c042a02a8c
19 | SnapKit: d612e99e678a2d3b95bf60b0705ed0a35c03484a
20 |
21 | PODFILE CHECKSUM: cc584c186fef3380df7edbb3c8fd21a180fb5eae
22 |
23 | COCOAPODS: 1.16.2
24 |
--------------------------------------------------------------------------------
/Example/Pods/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 |
--------------------------------------------------------------------------------
/Example/Pods/SnapKit/Sources/ConstraintDirectionalInsets.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 canImport(UIKit)
25 | import UIKit
26 | #else
27 | import AppKit
28 | #endif
29 |
30 |
31 | #if canImport(UIKit)
32 | @available(iOS 11.0, tvOS 11.0, *)
33 | public typealias ConstraintDirectionalInsets = NSDirectionalEdgeInsets
34 | #endif
35 |
--------------------------------------------------------------------------------
/Example/Pods/SnapKit/Sources/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 canImport(UIKit)
25 | import UIKit
26 | #else
27 | import AppKit
28 | #endif
29 |
30 |
31 | #if canImport(UIKit)
32 | public typealias ConstraintInsets = UIEdgeInsets
33 | #else
34 | public typealias ConstraintInsets = NSEdgeInsets
35 | #endif
36 |
--------------------------------------------------------------------------------
/Example/Pods/SnapKit/Sources/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 canImport(UIKit)
25 | import UIKit
26 | #endif
27 |
28 |
29 | @available(iOS 9.0, OSX 10.11, *)
30 | public extension ConstraintLayoutGuide {
31 |
32 | var snp: ConstraintLayoutGuideDSL {
33 | return ConstraintLayoutGuideDSL(guide: self)
34 | }
35 |
36 | }
37 |
--------------------------------------------------------------------------------
/Example/Pods/SnapKit/Sources/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 canImport(UIKit)
25 | import UIKit
26 | #else
27 | import AppKit
28 | #endif
29 |
30 |
31 | #if canImport(UIKit)
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 |
--------------------------------------------------------------------------------
/Example/Pods/SnapKit/Sources/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 canImport(UIKit)
25 | import UIKit
26 | #else
27 | import AppKit
28 | #endif
29 |
30 |
31 | #if canImport(UIKit)
32 | @available(iOS 8.0, *)
33 | public typealias ConstraintLayoutSupport = UILayoutSupport
34 | #else
35 | public class ConstraintLayoutSupport {}
36 | #endif
37 |
--------------------------------------------------------------------------------
/Example/Pods/SnapKit/Sources/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 canImport(UIKit)
25 | import UIKit
26 | #else
27 | import AppKit
28 | #endif
29 |
30 |
31 | #if canImport(UIKit)
32 | public typealias ConstraintView = UIView
33 | #else
34 | public typealias ConstraintView = NSView
35 | #endif
36 |
--------------------------------------------------------------------------------
/Example/Pods/SnapKit/Sources/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 canImport(UIKit)
25 | import UIKit
26 | #endif
27 |
28 |
29 | @available(iOS 8.0, *)
30 | public extension ConstraintLayoutSupport {
31 |
32 | var snp: ConstraintLayoutSupportDSL {
33 | return ConstraintLayoutSupportDSL(support: self)
34 | }
35 |
36 | }
37 |
--------------------------------------------------------------------------------
/Example/Pods/Target Support Files/JKSwiftExtension/JKSwiftExtension-Info.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | CFBundleDevelopmentRegion
6 | ${PODS_DEVELOPMENT_LANGUAGE}
7 | CFBundleExecutable
8 | ${EXECUTABLE_NAME}
9 | CFBundleIdentifier
10 | ${PRODUCT_BUNDLE_IDENTIFIER}
11 | CFBundleInfoDictionaryVersion
12 | 6.0
13 | CFBundleName
14 | ${PRODUCT_NAME}
15 | CFBundlePackageType
16 | FMWK
17 | CFBundleShortVersionString
18 | 2.7.3
19 | CFBundleSignature
20 | ????
21 | CFBundleVersion
22 | ${CURRENT_PROJECT_VERSION}
23 | NSPrincipalClass
24 |
25 |
26 |
27 |
--------------------------------------------------------------------------------
/Example/Pods/Target Support Files/JKSwiftExtension/JKSwiftExtension-dummy.m:
--------------------------------------------------------------------------------
1 | #import
2 | @interface PodsDummy_JKSwiftExtension : NSObject
3 | @end
4 | @implementation PodsDummy_JKSwiftExtension
5 | @end
6 |
--------------------------------------------------------------------------------
/Example/Pods/Target Support Files/JKSwiftExtension/JKSwiftExtension-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 |
--------------------------------------------------------------------------------
/Example/Pods/Target Support Files/JKSwiftExtension/JKSwiftExtension-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 JKSwiftExtensionVersionNumber;
15 | FOUNDATION_EXPORT const unsigned char JKSwiftExtensionVersionString[];
16 |
17 |
--------------------------------------------------------------------------------
/Example/Pods/Target Support Files/JKSwiftExtension/JKSwiftExtension.debug.xcconfig:
--------------------------------------------------------------------------------
1 | CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO
2 | CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/JKSwiftExtension
3 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1
4 | LIBRARY_SEARCH_PATHS = $(inherited) "${TOOLCHAIN_DIR}/usr/lib/swift/${PLATFORM_NAME}" /usr/lib/swift
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_DEVELOPMENT_LANGUAGE = ${DEVELOPMENT_LANGUAGE}
9 | PODS_ROOT = ${SRCROOT}
10 | PODS_TARGET_SRCROOT = ${PODS_ROOT}/../..
11 | PODS_XCFRAMEWORKS_BUILD_DIR = $(PODS_CONFIGURATION_BUILD_DIR)/XCFrameworkIntermediates
12 | PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier}
13 | SKIP_INSTALL = YES
14 | USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES
15 |
--------------------------------------------------------------------------------
/Example/Pods/Target Support Files/JKSwiftExtension/JKSwiftExtension.modulemap:
--------------------------------------------------------------------------------
1 | framework module JKSwiftExtension {
2 | umbrella header "JKSwiftExtension-umbrella.h"
3 |
4 | export *
5 | module * { export * }
6 | }
7 |
--------------------------------------------------------------------------------
/Example/Pods/Target Support Files/JKSwiftExtension/JKSwiftExtension.release.xcconfig:
--------------------------------------------------------------------------------
1 | CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO
2 | CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/JKSwiftExtension
3 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1
4 | LIBRARY_SEARCH_PATHS = $(inherited) "${TOOLCHAIN_DIR}/usr/lib/swift/${PLATFORM_NAME}" /usr/lib/swift
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_DEVELOPMENT_LANGUAGE = ${DEVELOPMENT_LANGUAGE}
9 | PODS_ROOT = ${SRCROOT}
10 | PODS_TARGET_SRCROOT = ${PODS_ROOT}/../..
11 | PODS_XCFRAMEWORKS_BUILD_DIR = $(PODS_CONFIGURATION_BUILD_DIR)/XCFrameworkIntermediates
12 | PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier}
13 | SKIP_INSTALL = YES
14 | USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES
15 |
--------------------------------------------------------------------------------
/Example/Pods/Target Support Files/JKSwiftExtension/ResourceBundle-JKSwiftExtension-JKSwiftExtension-Info.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | CFBundleDevelopmentRegion
6 | ${PODS_DEVELOPMENT_LANGUAGE}
7 | CFBundleIdentifier
8 | ${PRODUCT_BUNDLE_IDENTIFIER}
9 | CFBundleInfoDictionaryVersion
10 | 6.0
11 | CFBundleName
12 | ${PRODUCT_NAME}
13 | CFBundlePackageType
14 | BNDL
15 | CFBundleShortVersionString
16 | 2.7.3
17 | CFBundleSignature
18 | ????
19 | CFBundleVersion
20 | 1
21 | NSPrincipalClass
22 |
23 |
24 |
25 |
--------------------------------------------------------------------------------
/Example/Pods/Target Support Files/Pods-JKSwiftExtension_Example/Pods-JKSwiftExtension_Example-Info.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | CFBundleDevelopmentRegion
6 | ${PODS_DEVELOPMENT_LANGUAGE}
7 | CFBundleExecutable
8 | ${EXECUTABLE_NAME}
9 | CFBundleIdentifier
10 | ${PRODUCT_BUNDLE_IDENTIFIER}
11 | CFBundleInfoDictionaryVersion
12 | 6.0
13 | CFBundleName
14 | ${PRODUCT_NAME}
15 | CFBundlePackageType
16 | FMWK
17 | CFBundleShortVersionString
18 | 1.0.0
19 | CFBundleSignature
20 | ????
21 | CFBundleVersion
22 | ${CURRENT_PROJECT_VERSION}
23 | NSPrincipalClass
24 |
25 |
26 |
27 |
--------------------------------------------------------------------------------
/Example/Pods/Target Support Files/Pods-JKSwiftExtension_Example/Pods-JKSwiftExtension_Example-dummy.m:
--------------------------------------------------------------------------------
1 | #import
2 | @interface PodsDummy_Pods_JKSwiftExtension_Example : NSObject
3 | @end
4 | @implementation PodsDummy_Pods_JKSwiftExtension_Example
5 | @end
6 |
--------------------------------------------------------------------------------
/Example/Pods/Target Support Files/Pods-JKSwiftExtension_Example/Pods-JKSwiftExtension_Example-frameworks-Debug-input-files.xcfilelist:
--------------------------------------------------------------------------------
1 | ${PODS_ROOT}/Target Support Files/Pods-JKSwiftExtension_Example/Pods-JKSwiftExtension_Example-frameworks.sh
2 | ${BUILT_PRODUCTS_DIR}/JKSwiftExtension/JKSwiftExtension.framework
3 | ${BUILT_PRODUCTS_DIR}/SnapKit/SnapKit.framework
--------------------------------------------------------------------------------
/Example/Pods/Target Support Files/Pods-JKSwiftExtension_Example/Pods-JKSwiftExtension_Example-frameworks-Debug-output-files.xcfilelist:
--------------------------------------------------------------------------------
1 | ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/JKSwiftExtension.framework
2 | ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/SnapKit.framework
--------------------------------------------------------------------------------
/Example/Pods/Target Support Files/Pods-JKSwiftExtension_Example/Pods-JKSwiftExtension_Example-frameworks-Release-input-files.xcfilelist:
--------------------------------------------------------------------------------
1 | ${PODS_ROOT}/Target Support Files/Pods-JKSwiftExtension_Example/Pods-JKSwiftExtension_Example-frameworks.sh
2 | ${BUILT_PRODUCTS_DIR}/JKSwiftExtension/JKSwiftExtension.framework
3 | ${BUILT_PRODUCTS_DIR}/SnapKit/SnapKit.framework
--------------------------------------------------------------------------------
/Example/Pods/Target Support Files/Pods-JKSwiftExtension_Example/Pods-JKSwiftExtension_Example-frameworks-Release-output-files.xcfilelist:
--------------------------------------------------------------------------------
1 | ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/JKSwiftExtension.framework
2 | ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/SnapKit.framework
--------------------------------------------------------------------------------
/Example/Pods/Target Support Files/Pods-JKSwiftExtension_Example/Pods-JKSwiftExtension_Example-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_JKSwiftExtension_ExampleVersionNumber;
15 | FOUNDATION_EXPORT const unsigned char Pods_JKSwiftExtension_ExampleVersionString[];
16 |
17 |
--------------------------------------------------------------------------------
/Example/Pods/Target Support Files/Pods-JKSwiftExtension_Example/Pods-JKSwiftExtension_Example.debug.xcconfig:
--------------------------------------------------------------------------------
1 | ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES
2 | CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO
3 | FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/JKSwiftExtension" "${PODS_CONFIGURATION_BUILD_DIR}/SnapKit"
4 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1
5 | HEADER_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/JKSwiftExtension/JKSwiftExtension.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/SnapKit/SnapKit.framework/Headers"
6 | LD_RUNPATH_SEARCH_PATHS = $(inherited) /usr/lib/swift '@executable_path/Frameworks' '@loader_path/Frameworks'
7 | LIBRARY_SEARCH_PATHS = $(inherited) "${TOOLCHAIN_DIR}/usr/lib/swift/${PLATFORM_NAME}" /usr/lib/swift $(SDKROOT)/usr/lib/swift
8 | OTHER_LDFLAGS = $(inherited) -l"swiftCoreGraphics" -framework "JKSwiftExtension" -framework "SnapKit"
9 | OTHER_MODULE_VERIFIER_FLAGS = $(inherited) "-F${PODS_CONFIGURATION_BUILD_DIR}/JKSwiftExtension" "-F${PODS_CONFIGURATION_BUILD_DIR}/SnapKit"
10 | OTHER_SWIFT_FLAGS = $(inherited) -D COCOAPODS
11 | PODS_BUILD_DIR = ${BUILD_DIR}
12 | PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)
13 | PODS_PODFILE_DIR_PATH = ${SRCROOT}/.
14 | PODS_ROOT = ${SRCROOT}/Pods
15 | PODS_XCFRAMEWORKS_BUILD_DIR = $(PODS_CONFIGURATION_BUILD_DIR)/XCFrameworkIntermediates
16 | USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES
17 |
--------------------------------------------------------------------------------
/Example/Pods/Target Support Files/Pods-JKSwiftExtension_Example/Pods-JKSwiftExtension_Example.modulemap:
--------------------------------------------------------------------------------
1 | framework module Pods_JKSwiftExtension_Example {
2 | umbrella header "Pods-JKSwiftExtension_Example-umbrella.h"
3 |
4 | export *
5 | module * { export * }
6 | }
7 |
--------------------------------------------------------------------------------
/Example/Pods/Target Support Files/Pods-JKSwiftExtension_Example/Pods-JKSwiftExtension_Example.release.xcconfig:
--------------------------------------------------------------------------------
1 | ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES
2 | CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO
3 | FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/JKSwiftExtension" "${PODS_CONFIGURATION_BUILD_DIR}/SnapKit"
4 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1
5 | HEADER_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/JKSwiftExtension/JKSwiftExtension.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/SnapKit/SnapKit.framework/Headers"
6 | LD_RUNPATH_SEARCH_PATHS = $(inherited) /usr/lib/swift '@executable_path/Frameworks' '@loader_path/Frameworks'
7 | LIBRARY_SEARCH_PATHS = $(inherited) "${TOOLCHAIN_DIR}/usr/lib/swift/${PLATFORM_NAME}" /usr/lib/swift $(SDKROOT)/usr/lib/swift
8 | OTHER_LDFLAGS = $(inherited) -l"swiftCoreGraphics" -framework "JKSwiftExtension" -framework "SnapKit"
9 | OTHER_MODULE_VERIFIER_FLAGS = $(inherited) "-F${PODS_CONFIGURATION_BUILD_DIR}/JKSwiftExtension" "-F${PODS_CONFIGURATION_BUILD_DIR}/SnapKit"
10 | OTHER_SWIFT_FLAGS = $(inherited) -D COCOAPODS
11 | PODS_BUILD_DIR = ${BUILD_DIR}
12 | PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)
13 | PODS_PODFILE_DIR_PATH = ${SRCROOT}/.
14 | PODS_ROOT = ${SRCROOT}/Pods
15 | PODS_XCFRAMEWORKS_BUILD_DIR = $(PODS_CONFIGURATION_BUILD_DIR)/XCFrameworkIntermediates
16 | USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES
17 |
--------------------------------------------------------------------------------
/Example/Pods/Target Support Files/SnapKit/SnapKit-Info.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | CFBundleDevelopmentRegion
6 | ${PODS_DEVELOPMENT_LANGUAGE}
7 | CFBundleExecutable
8 | ${EXECUTABLE_NAME}
9 | CFBundleIdentifier
10 | ${PRODUCT_BUNDLE_IDENTIFIER}
11 | CFBundleInfoDictionaryVersion
12 | 6.0
13 | CFBundleName
14 | ${PRODUCT_NAME}
15 | CFBundlePackageType
16 | FMWK
17 | CFBundleShortVersionString
18 | 5.7.1
19 | CFBundleSignature
20 | ????
21 | CFBundleVersion
22 | ${CURRENT_PROJECT_VERSION}
23 | NSPrincipalClass
24 |
25 |
26 |
27 |
--------------------------------------------------------------------------------
/Example/Pods/Target Support Files/SnapKit/SnapKit-dummy.m:
--------------------------------------------------------------------------------
1 | #import
2 | @interface PodsDummy_SnapKit : NSObject
3 | @end
4 | @implementation PodsDummy_SnapKit
5 | @end
6 |
--------------------------------------------------------------------------------
/Example/Pods/Target Support Files/SnapKit/SnapKit-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 |
--------------------------------------------------------------------------------
/Example/Pods/Target Support Files/SnapKit/SnapKit-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 SnapKitVersionNumber;
15 | FOUNDATION_EXPORT const unsigned char SnapKitVersionString[];
16 |
17 |
--------------------------------------------------------------------------------
/Example/Pods/Target Support Files/SnapKit/SnapKit.debug.xcconfig:
--------------------------------------------------------------------------------
1 | CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO
2 | CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/SnapKit
3 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1
4 | LIBRARY_SEARCH_PATHS = $(inherited) "${TOOLCHAIN_DIR}/usr/lib/swift/${PLATFORM_NAME}" /usr/lib/swift $(SDKROOT)/usr/lib/swift
5 | OTHER_LDFLAGS = $(inherited) -l"swiftCoreGraphics"
6 | OTHER_SWIFT_FLAGS = $(inherited) -D COCOAPODS
7 | PODS_BUILD_DIR = ${BUILD_DIR}
8 | PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)
9 | PODS_DEVELOPMENT_LANGUAGE = ${DEVELOPMENT_LANGUAGE}
10 | PODS_ROOT = ${SRCROOT}
11 | PODS_TARGET_SRCROOT = ${PODS_ROOT}/SnapKit
12 | PODS_XCFRAMEWORKS_BUILD_DIR = $(PODS_CONFIGURATION_BUILD_DIR)/XCFrameworkIntermediates
13 | PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier}
14 | SKIP_INSTALL = YES
15 | USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES
16 |
--------------------------------------------------------------------------------
/Example/Pods/Target Support Files/SnapKit/SnapKit.modulemap:
--------------------------------------------------------------------------------
1 | framework module SnapKit {
2 | umbrella header "SnapKit-umbrella.h"
3 |
4 | export *
5 | module * { export * }
6 | }
7 |
--------------------------------------------------------------------------------
/Example/Pods/Target Support Files/SnapKit/SnapKit.release.xcconfig:
--------------------------------------------------------------------------------
1 | CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO
2 | CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/SnapKit
3 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1
4 | LIBRARY_SEARCH_PATHS = $(inherited) "${TOOLCHAIN_DIR}/usr/lib/swift/${PLATFORM_NAME}" /usr/lib/swift $(SDKROOT)/usr/lib/swift
5 | OTHER_LDFLAGS = $(inherited) -l"swiftCoreGraphics"
6 | OTHER_SWIFT_FLAGS = $(inherited) -D COCOAPODS
7 | PODS_BUILD_DIR = ${BUILD_DIR}
8 | PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)
9 | PODS_DEVELOPMENT_LANGUAGE = ${DEVELOPMENT_LANGUAGE}
10 | PODS_ROOT = ${SRCROOT}
11 | PODS_TARGET_SRCROOT = ${PODS_ROOT}/SnapKit
12 | PODS_XCFRAMEWORKS_BUILD_DIR = $(PODS_CONFIGURATION_BUILD_DIR)/XCFrameworkIntermediates
13 | PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier}
14 | SKIP_INSTALL = YES
15 | USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES
16 |
--------------------------------------------------------------------------------
/Example/Tests/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 | BNDL
17 | CFBundleShortVersionString
18 | 1.0
19 | CFBundleSignature
20 | ????
21 | CFBundleVersion
22 | 1
23 |
24 |
25 |
--------------------------------------------------------------------------------
/Example/Tests/StringTest.swift:
--------------------------------------------------------------------------------
1 | //
2 | // StringTest.swift
3 | // JKSwiftExtension_Tests
4 | //
5 | // Created by IronMan on 2020/9/24.
6 | // Copyright © 2020 CocoaPods. All rights reserved.
7 | //
8 |
9 | import XCTest
10 | import JKSwiftExtension
11 | class StringTest: XCTestCase {
12 |
13 | override func setUpWithError() throws {
14 | // Put setup code here. This method is called before the invocation of each test method in the class.
15 | }
16 |
17 | override func tearDownWithError() throws {
18 | // Put teardown code here. This method is called after the invocation of each test method in the class.
19 | }
20 |
21 | func testExample() throws {
22 |
23 | // test1()
24 |
25 | test2()
26 | }
27 |
28 | func test2() {
29 | let studentsName = "我是一只小小鸟A"
30 | // 判断是不是 nil
31 | XCTAssertTrue(studentsName.jk.containsIgnoringCase(find: "a"), "包含字符串")
32 | }
33 |
34 | func test1() {
35 | let studentsName = "我是一只小小鸟"
36 | // 判断是不是 nil
37 | XCTAssertNotNil(studentsName.range(of: "小"), "包含字符串")
38 | }
39 |
40 | func testPerformanceExample() throws {
41 | // This is an example of a performance test case.
42 | self.measure {
43 | // Put the code you want to measure the time of here.
44 | }
45 | }
46 |
47 | }
48 |
--------------------------------------------------------------------------------
/Example/Tests/Tests.swift:
--------------------------------------------------------------------------------
1 | import XCTest
2 | import JKSwiftExtension
3 |
4 | class Tests: XCTestCase {
5 |
6 | override func setUp() {
7 | super.setUp()
8 | // Put setup code here. This method is called before the invocation of each test method in the class.
9 | }
10 |
11 | override func tearDown() {
12 | // Put teardown code here. This method is called after the invocation of each test method in the class.
13 | super.tearDown()
14 | }
15 |
16 | func testExample() {
17 | // This is an example of a functional test case.
18 | XCTAssert(true, "Pass")
19 | }
20 |
21 | func testPerformanceExample() {
22 | // This is an example of a performance test case.
23 | self.measure() {
24 | // Put the code you want to measure the time of here.
25 | }
26 | }
27 |
28 | }
29 |
--------------------------------------------------------------------------------
/OtherEvent/通讯录和日历事件感兴趣的可以看看:
--------------------------------------------------------------------------------
1 | 通讯录和日历事件感兴趣的可以看看
--------------------------------------------------------------------------------
/Package.swift:
--------------------------------------------------------------------------------
1 | // swift-tools-version:5.5
2 |
3 | import PackageDescription
4 |
5 | let package = Package(
6 | name: "JKSwiftExtension",
7 | platforms: [.iOS(.v13)],
8 | products: [
9 | .library(
10 | name: "JKSwiftExtension",
11 | targets: ["JKSwiftExtension"]),
12 | ],
13 | dependencies: [
14 | // Dependencies declare other packages that this package depends on.
15 | // .package(url: /* package url */, from: "1.0.0"),
16 | ],
17 | targets: [
18 | .target(
19 | name: "JKSwiftExtension",
20 | path: "Sources",
21 | resources: [.process("Assets/ironman.png")]
22 | ),
23 | .testTarget(
24 | name: "JKSwiftExtensionTests",
25 | dependencies: ["JKSwiftExtension"]),
26 | ]
27 | )
28 |
--------------------------------------------------------------------------------
/Sources/Assets/.gitkeep:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/JoanKing/JKSwiftExtension/60ed6ddc03b541fe251cb0bbc0cca1fea389a4ac/Sources/Assets/.gitkeep
--------------------------------------------------------------------------------
/Sources/Assets/ironman.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/JoanKing/JKSwiftExtension/60ed6ddc03b541fe251cb0bbc0cca1fea389a4ac/Sources/Assets/ironman.png
--------------------------------------------------------------------------------
/Sources/Classes/.gitkeep:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/JoanKing/JKSwiftExtension/60ed6ddc03b541fe251cb0bbc0cca1fea389a4ac/Sources/Classes/.gitkeep
--------------------------------------------------------------------------------
/Sources/Classes/FoundationExtension/Bool+Extension.swift:
--------------------------------------------------------------------------------
1 | //
2 | // Bool+Extension.swift
3 | // JKSwiftExtension
4 | //
5 | // Created by IronMan on 2020/10/10.
6 | //
7 |
8 | import UIKit
9 | extension Bool: JKPOPCompatible {}
10 | // MARK: - 一、基本的扩展
11 | public extension JKPOP where Base == Bool {
12 |
13 | // MARK: 1.1、Bool 值转 Int
14 | /// Bool 值转 Int
15 | var boolToInt: Int { return self.base ? 1 : 0 }
16 | }
17 |
--------------------------------------------------------------------------------
/Sources/Classes/FoundationExtension/CGPoint+Extension.swift:
--------------------------------------------------------------------------------
1 | //
2 | // CGPoint+Extension.swift
3 | // JKSwiftExtension
4 | //
5 | // Created by 小冲冲 on 2024/1/22.
6 | //
7 | // MARK: CGPoint扩展
8 | import UIKit
9 |
10 | // MARK: - 一、基本的扩展
11 | public extension CGPoint {
12 | // MARK: 1.1、两个CGPoint之间的差
13 | /// 两个CGPoint之间的差
14 | /// - Parameters:
15 | /// - lhs: 左边的点
16 | /// - rhs: 右边的点
17 | /// - Returns: 结果
18 | static func - (lhs: CGPoint, rhs: CGPoint) -> CGPoint {
19 | return CGPoint(x: lhs.x - rhs.x, y: lhs.y - rhs.y)
20 | }
21 |
22 | // MARK: 1.2、计算两个 CGPoint 的中点
23 | // MARK: 计算两个 CGPoint 的中点
24 | /// 计算两个 CGPoint 的中点
25 | /// - Parameter point: 另外一个点
26 | /// - Returns: 中间点
27 | func midPoint(by point: CGPoint) -> CGPoint {
28 | return CGPoint(x: (self.x + point.x) / 2, y: (self.y + point.y) / 2)
29 | }
30 |
31 | static func * (lhs: CGPoint, rhs: CGFloat) -> CGPoint {
32 | return CGPoint(x: lhs.x * rhs, y: lhs.y * rhs)
33 | }
34 | }
35 |
36 |
--------------------------------------------------------------------------------
/Sources/Classes/FoundationExtension/CGRect+Extension.swift:
--------------------------------------------------------------------------------
1 | //
2 | // CGRect+Extension.swift
3 | // JKSwiftExtension
4 | //
5 | // Created by chongwang on 2024/11/5.
6 | //
7 |
8 | import Foundation
9 |
10 | // MARK: - 一、基本的扩展方法
11 | extension CGRect {
12 |
13 | static func * (lhs: CGRect, rhs: CGFloat) -> CGRect {
14 | return CGRect(origin: lhs.origin * rhs, size: lhs.size * rhs)
15 | }
16 | }
17 |
--------------------------------------------------------------------------------
/Sources/Classes/FoundationExtension/CGSize+Extension.swift:
--------------------------------------------------------------------------------
1 | //
2 | // CGSize+Extension.swift
3 | // JKSwiftExtension
4 | //
5 | // Created by chongwang on 2024/11/5.
6 | //
7 | import Foundation
8 |
9 | extension CGSize {
10 |
11 | static func * (lhs: CGSize, rhs: CGFloat) -> CGSize {
12 | return CGSize(width: lhs.width * rhs, height: lhs.height * rhs)
13 | }
14 | }
15 |
--------------------------------------------------------------------------------
/Sources/Classes/FoundationExtension/Character+Extension.swift:
--------------------------------------------------------------------------------
1 | //
2 | // Character+Extension.swift
3 | // JKSwiftExtension
4 | //
5 | // Created by IronMan on 2020/10/10.
6 | //
7 |
8 | import UIKit
9 | extension Character: JKPOPCompatible {}
10 | // MARK: - 一、Character 与其他类型的转换
11 | public extension JKPOP where Base == Character {
12 |
13 | // MARK: 1.1、Character 转 String
14 | /// Character 转 String
15 | var charToString: String { return String(self.base) }
16 |
17 | // MARK: 1.2、Character 转 Int
18 | /// Character 转 Int
19 | var charToInt: Int? {
20 | return Int(String(self.base))
21 |
22 | }
23 | }
24 |
25 | // MARK: - 二、常用的属性和方法
26 | public extension JKPOP where Base == Character {
27 |
28 | // MARK: 2.1、判断是不是 Emoji 表情
29 | /// 判断是不是 Emoj 表情
30 | var isEmoji: Bool {
31 | return String(self.base).jk.includesEmoji()
32 | }
33 | }
34 |
--------------------------------------------------------------------------------
/Sources/Classes/FoundationExtension/Data+extension.swift:
--------------------------------------------------------------------------------
1 | //
2 | // Data+extension.swift
3 | // JKSwiftExtension
4 | //
5 | // Created by IronMan on 2020/11/28.
6 | //
7 |
8 | import UIKit
9 | extension Data: JKPOPCompatible {}
10 | // MARK: - 一、基本的扩展
11 | public extension JKPOP where Base == Data {
12 |
13 | // MARK: 1.1、base64编码成 Data
14 | /// 编码
15 | var encodeToData: Data? {
16 | return self.base.base64EncodedData()
17 | }
18 |
19 | // MARK: 1.2、base64解码成 Data
20 | /// 解码成 Data
21 | var decodeToDada: Data? {
22 | return Data(base64Encoded: self.base)
23 | }
24 |
25 | // MARK: 1.3、转成bytes
26 | /// 转成bytes
27 | var bytes: [UInt8] {
28 | return [UInt8](self.base)
29 | }
30 |
31 | // MARK: 1.4、Data转十六进制的字符串
32 | /// Data转16进制的字符串
33 | /// - Parameter data: data
34 | /// - Returns: 16进制的字符串
35 | var toHexString: String? {
36 | let data = self.base
37 | let dataBuffer = [UInt8](data)
38 | let dataLength = data.count
39 | var hexString = ""
40 |
41 | for i in 0.. String {
23 | guard isRemoveDecimalZero else { return "\(self.base.stringValue)" }
24 | // 检查小数部分是否为 0
25 | if self.base.decimalValue.isEqual(to: NSDecimalNumber.zero.decimalValue) {
26 | return "\(self.base.intValue)"
27 | } else {
28 | return "\(self.base.stringValue)"
29 | }
30 | }
31 | }
32 |
--------------------------------------------------------------------------------
/Sources/Classes/FoundationExtension/NSIndexPath+Extension.swift:
--------------------------------------------------------------------------------
1 | //
2 | // NSIndexPath+Extension.swift
3 | // JKSwiftExtension
4 | //
5 | // Created by IronMan on 2020/12/31.
6 | //
7 |
8 | import Foundation
9 | // MARK: - 一、基本的扩展
10 | public extension NSIndexPath {
11 | // MARK: 1.1、 {section, row}
12 | /// {section, row}
13 | var string: String {
14 | return String(format: "{%d, %d}", section, row)
15 | }
16 |
17 | // MARK: 1.2、当前 NSIndexPath 的前一个 NSIndexPath
18 | /// 当前 NSIndexPath 的前一个 NSIndexPath
19 | var previousRow: NSIndexPath {
20 | if row == 0 {
21 | return self
22 | }
23 | return NSIndexPath(row: self.row - 1, section: self.section)
24 | }
25 |
26 | // MARK: 1.3、当前 NSIndexPath 的后一个 NSIndexPath
27 | /// 当前 NSIndexPath 的后一个 NSIndexPath
28 | var nextRow: NSIndexPath {
29 | return NSIndexPath(row: self.row + 1, section: self.section)
30 | }
31 | }
32 |
33 |
--------------------------------------------------------------------------------
/Sources/Classes/FoundationExtension/NSRange+Extension.swift:
--------------------------------------------------------------------------------
1 | //
2 | // NSRange+Extension.swift
3 | // JKSwiftExtension
4 | //
5 | // Created by IronMan on 2021/2/18.
6 | //
7 |
8 | import Foundation
9 | extension NSRange: JKPOPCompatible {}
10 |
11 | // MARK: - 一、基本的扩展
12 | public extension JKPOP where Base == NSRange {
13 |
14 | // MARK: 1.1、NSRange转换成Range的方法
15 | /// NSRange转换成Range的方法
16 | /// - Parameter string: 父字符串
17 | /// - Returns: Range
18 | func toRange(string: String) -> Range? {
19 | guard
20 | let from16 = string.utf16.index(string.utf16.startIndex, offsetBy: self.base.location, limitedBy: string.utf16.endIndex),
21 | let to16 = string.utf16.index(from16, offsetBy: self.base.length, limitedBy: string.utf16.endIndex),
22 | let from = String.Index(from16, within: string),
23 | let to = String.Index(to16, within: string)
24 | else { return nil }
25 | return from ..< to
26 | }
27 | }
28 |
29 |
--------------------------------------------------------------------------------
/Sources/Classes/FoundationExtension/Range+Extension.swift:
--------------------------------------------------------------------------------
1 | //
2 | // Range+Extension.swift
3 | // JKSwiftExtension
4 | //
5 | // Created by IronMan on 2021/3/25.
6 | //
7 |
8 | import Foundation
9 |
10 | // MARK: - 一、基本的扩展
11 | extension Range: JKPOPCompatible {}
12 |
13 | public extension JKPOP where Base: RangeExpression, Base.Bound == String.Index {
14 |
15 | // MARK: 1.1、Range 转 NSRange
16 | /// Range 转 NSRange
17 | /// - Parameter string: 父字符串
18 | /// - Returns: NSRange
19 | func toNSRange(in string: S) -> NSRange {
20 | return NSRange(self.base, in: string)
21 | }
22 | }
23 |
--------------------------------------------------------------------------------
/Sources/Classes/FoundationExtension/UInt+Extension.swift:
--------------------------------------------------------------------------------
1 | //
2 | // UInt+Extension.swift
3 | // JKSwiftExtension
4 | //
5 | // Created by IronMan on 2020/10/10.
6 | //
7 |
8 | import UIKit
9 | extension UInt: JKPOPCompatible {}
10 | // MARK: - 一、UInt 与其他类型的转换
11 | public extension JKPOP where Base == UInt {
12 | // MARK: 1.1、转 Int
13 | /// 转 Int
14 | var uintToInt: Int { return Int(self.base) }
15 | }
16 |
--------------------------------------------------------------------------------
/Sources/Classes/FoundationExtension/URL+Extension.swift:
--------------------------------------------------------------------------------
1 | //
2 | // URL+Extension.swift
3 | // JKSwiftExtension
4 | //
5 | // Created by IronMan on 2020/10/10.
6 | //
7 |
8 | import UIKit
9 | extension URL: JKPOPCompatible {}
10 | // MARK: - 一、基本的扩展
11 | public extension JKPOP where Base == URL {
12 |
13 | // MARK: 1.1、提取链接中的参数以字典像是显示
14 | /// 提取链接中的参数以字典形式显示
15 | var queryParameters: [String: String]? {
16 | guard let components = URLComponents(url: self.base, resolvingAgainstBaseURL: true), let queryItems = components.queryItems else {
17 | return nil
18 | }
19 | var parameters = [String: String]()
20 | for item in queryItems {
21 | parameters[item.name] = item.value
22 | }
23 | return parameters
24 | }
25 |
26 | // MARK: 1.2、属性说明
27 | /// 属性说明
28 | func propertyDescription() {
29 | JKPrint("完整的url字符串 absoluteString:\(base.absoluteString)", "协议 scheme:\(base.scheme ?? "")", "域名 host:\(base.host ?? "")", "路径 path:\(base.path)", "相对路径 relativePath:\(base.relativePath)", "端口 port:\(base.port ?? 0)", "pathComponents:\(base.pathComponents)", "参数 query:\(base.query ?? "")")
30 | }
31 |
32 | // MARK: 1.3、检测应用是否能打开这个URL实例
33 | /// 1.3、检测应用是否能打开这个URL实例
34 | /// - Returns: 结果
35 | func verifyUrl() -> Bool {
36 | return UIApplication.shared.canOpenURL(self.base)
37 | }
38 |
39 | //MARK: 1.4、从url中获取后缀 例:mp3/mp4等等
40 | /// 从url中获取后缀 例:mp3/mp4等等
41 | var pathExtension: String {
42 | return self.base.pathExtension.isEmpty ? "" : "\(self.base.pathExtension)"
43 | }
44 | }
45 |
--------------------------------------------------------------------------------
/Sources/Classes/Protocol/JKJSON.swift:
--------------------------------------------------------------------------------
1 | //
2 | // JKJSON.swift
3 | // JKSwiftExtension
4 | //
5 | // Created by IronMan on 2021/2/22.
6 | //
7 |
8 | import Foundation
9 |
10 | // MARK: - 自定义一个JSON协议
11 | public protocol JKJSON: Codable {
12 | func toJSONString() -> String?
13 | }
14 |
15 | // MARK: - 扩展协议方法
16 | public extension JKJSON {
17 | // MARK: 将数据转成可用的JSON模型
18 | func toJSONString() -> String? {
19 | // encoded对象
20 | if let encodedData = try? JSONEncoder().encode(self) {
21 | // 从encoded对象获取String
22 | return String(data: encodedData, encoding: .utf8)
23 | }
24 | return nil
25 | }
26 | }
27 |
--------------------------------------------------------------------------------
/Sources/Classes/Protocol/JKNibLoadable.swift:
--------------------------------------------------------------------------------
1 | //
2 | // NibLoadable.swift
3 | // JKLive
4 | //
5 | // Created by 王冲 on 2020/7/23.
6 | // Copyright © 2020 王冲. All rights reserved.
7 | //
8 |
9 | import Foundation
10 | import UIKit
11 |
12 | public protocol JKNibLoadable {
13 | }
14 |
15 | // MARK: - 一、继承于UIView的才可以使用该协议的扩展
16 | public extension JKNibLoadable where Self: UIView {
17 |
18 | // MARK: 1.1、加载xib视图
19 | /// 加载xib视图
20 | /// - Parameter nibName: xib名字
21 | /// - Returns: 返回视图
22 | static func loadFromNib(_ nibName: String? = nil) -> Self {
23 | let loadNme = nibName == nil ? "\(self)" : nibName!
24 | return Bundle.main.loadNibNamed(loadNme, owner: nil, options: nil)?.first as! Self
25 | }
26 | }
27 |
--------------------------------------------------------------------------------
/Sources/Classes/Protocol/JKPOP.swift:
--------------------------------------------------------------------------------
1 | //
2 | // JKPOP.swift
3 | // JKSwiftExtension
4 | //
5 | // Created by IronMan on 2020/9/24.
6 | //
7 |
8 | import UIKit
9 | import Foundation
10 | public struct JKPOP {
11 | let base: Base
12 | init(_ base: Base) {
13 | self.base = base
14 | }
15 | }
16 |
17 | public protocol JKPOPCompatible {}
18 |
19 | public extension JKPOPCompatible {
20 |
21 | static var jk: JKPOP.Type {
22 | get{ JKPOP.self }
23 | set {}
24 | }
25 |
26 | var jk: JKPOP {
27 | get { JKPOP(self) }
28 | set {}
29 | }
30 | }
31 |
32 | /// Define Property protocol
33 | internal protocol JKSwiftPropertyCompatible {
34 |
35 | /// Extended type
36 | associatedtype T
37 |
38 | ///Alias for callback function
39 | typealias SwiftCallBack = ((T?) -> ())
40 |
41 | ///Define the calculated properties of the closure type
42 | var swiftCallBack: SwiftCallBack? { get set }
43 | }
44 |
--------------------------------------------------------------------------------
/Sources/Classes/Protocol/JKPOPExtension/JKPOP+String.swift:
--------------------------------------------------------------------------------
1 | //
2 | // JKPOP+String.swift
3 | // nuannuan
4 | //
5 | // Created by 王冲 on 2019/11/23.
6 | // Copyright © 2019 王冲. All rights reserved.
7 | //
8 |
9 | import UIKit
10 |
11 | extension String: JKPOPCompatible {}
12 | extension NSString: JKPOPCompatible {}
13 |
14 | extension JKPOP where Base: ExpressibleByStringLiteral {
15 |
16 | func numberCount() -> Int {
17 | guard let string = base as? String else {
18 | return 0
19 | }
20 | var count = 0
21 | for c in string where ("0"..."9").contains(c) {
22 | count += 1
23 | }
24 | return count
25 | }
26 | }
27 |
--------------------------------------------------------------------------------
/Sources/Classes/SmallTools/JKClosure.swift:
--------------------------------------------------------------------------------
1 | //
2 | // JKClosure.swift
3 | // JKSwiftExtension
4 | //
5 | // Created by IronMan on 2021/1/12.
6 | //
7 |
8 | import Foundation
9 | import UIKit
10 |
11 | /// View的闭包
12 | public typealias ViewClosure = ((UITapGestureRecognizer?, UIView, NSInteger) ->Void)
13 | /// 手势的闭包
14 | public typealias RecognizerClosure = ((UIGestureRecognizer) ->Void)
15 | /// UIControl闭包
16 | public typealias ControlClosure = ((UIControl) ->Void)
17 |
--------------------------------------------------------------------------------
/Sources/Classes/SmallTools/JKDecodeString.swift:
--------------------------------------------------------------------------------
1 | //
2 | // JKDecodeString.swift
3 | // JKSwiftExtension
4 | //
5 | // Created by 小冲冲 on 2024/1/23.
6 | //
7 | // MARK: 不确定服务器的类型,使用String解析,目前支持其他类型是:Int,Double类型,不支持的使用返回nil
8 | import UIKit
9 |
10 | @propertyWrapper public struct JKDecodeString: Codable {
11 | public var wrappedValue: String?
12 | public init(from decoder: Decoder) throws {
13 | let container = try decoder.singleValueContainer()
14 | /// 返回的数据类型
15 | var string: String?
16 | do {
17 | string = try container.decode(String.self)
18 | } catch {
19 | do {
20 | string = String(try container.decode(Int.self))
21 | } catch {
22 | do {
23 | string = String(try container.decode(Double.self))
24 | } catch {
25 | string = nil
26 | }
27 | }
28 | }
29 | wrappedValue = string
30 | }
31 | }
32 |
--------------------------------------------------------------------------------
/Sources/Classes/SmallTools/JKOperator.swift:
--------------------------------------------------------------------------------
1 | //
2 | // JKOperator.swift
3 | // JKSwiftExtension
4 | //
5 | // Created by 小冲冲 on 2023/12/8.
6 | //
7 |
8 | import Foundation
9 |
10 |
11 | //MARK: 一、位移运算符
12 | /**
13 | Swift里面的运算符有三种:
14 | infix(中缀),如:+、-、*、/
15 | prefix(前缀),如:逻辑运算!a
16 | postfix(后缀),如:自增运算符i++
17 | */
18 | infix operator |>>>| : BitwiseShiftPrecedence
19 | /**
20 | Int32(truncatingIfNeeded: lhs),truncatingIfNeeded是一种整数类型转换方式,用于将一个整数值转换为另一个整数类型,并在需要时截断高位或低位的位数。Int32(truncatingIfNeeded: lhs)中 Int32指的是32位,最大32个1的二进制,也就是4294967295,如果是33位,最前面就会被截取掉,保留32位;这里以Int8作为个例子,比如: Int8(truncatingIfNeeded: 300),Int8类型只能表示 -128 到 127 的范围内的值,而 300 超出了这个范围,因此会发生截断。300的二进制是:100101100,Int8只能表示8位,那么 100101100 从右边往左截取8位为:00101100 转化为10进制为44
21 | */
22 |
23 | //MARK: 1.01、无符号右移运算符
24 | /// 无符号右移运算符
25 | /// - Parameters:
26 | /// - lhs: 值
27 | /// - rhs: 右移位数字
28 | /// - Returns: 右移动后的结果
29 | public func |>>>| (lhs: Int, rhs: Int) -> UInt32 {
30 | let truncating = Int32(truncatingIfNeeded: lhs)
31 | let value: UInt32 = UInt32(bitPattern: truncating)
32 | return value >> UInt32(rhs)
33 | }
34 |
--------------------------------------------------------------------------------
/Sources/Classes/SmallTools/JKPaddingLabel.swift:
--------------------------------------------------------------------------------
1 | //
2 | // JKPaddingLabel.swift
3 | // JKSwiftExtension
4 | //
5 | // Created by IronMan on 2021/2/26.
6 | //
7 |
8 | import UIKit
9 |
10 | // MARK: - 具有内边距的Label
11 | public class JKPaddingLabel : UILabel {
12 |
13 | private var padding = UIEdgeInsets.zero
14 |
15 | public var paddingLeft: CGFloat {
16 | get { return padding.left }
17 | set { padding.left = newValue }
18 | }
19 |
20 | public var paddingRight: CGFloat {
21 | get { return padding.right }
22 | set { padding.right = newValue }
23 | }
24 |
25 | public var paddingTop: CGFloat {
26 | get { return padding.top }
27 | set { padding.top = newValue }
28 | }
29 |
30 | public var paddingBottom: CGFloat {
31 | get { return padding.bottom }
32 | set { padding.bottom = newValue }
33 | }
34 |
35 | public override func drawText(in rect: CGRect) {
36 | super.drawText(in: rect.inset(by: padding))
37 | }
38 |
39 | public override func textRect(forBounds bounds: CGRect, limitedToNumberOfLines numberOfLines: Int) -> CGRect {
40 | let insets = self.padding
41 | var rect = super.textRect(forBounds: bounds.inset(by: insets), limitedToNumberOfLines: numberOfLines)
42 | rect.origin.x -= insets.left
43 | rect.origin.y -= insets.top
44 | rect.size.width += (insets.left + insets.right)
45 | rect.size.height += (insets.top + insets.bottom)
46 | return rect
47 | }
48 | }
49 |
--------------------------------------------------------------------------------
/Sources/Classes/SmallTools/JKPastedTextField.swift:
--------------------------------------------------------------------------------
1 | //
2 | // JKPastedTextField.swift
3 | // JKSwiftExtension
4 | //
5 | // Created by 小冲冲 on 2023/10/12.
6 | //
7 |
8 | import UIKit
9 |
10 | public class JKPastedTextField: UITextField {
11 | /// 是否正在复制
12 | public var isPasting = false
13 |
14 | public override func paste(_ sender: Any?) {
15 | super.paste(sender)
16 | isPasting = true
17 | }
18 | }
19 |
20 |
--------------------------------------------------------------------------------
/Sources/Classes/SmallTools/JKPastedTextView.swift:
--------------------------------------------------------------------------------
1 | //
2 | // JKPastedTextView.swift
3 | // JKSwiftExtension
4 | //
5 | // Created by 小冲冲 on 2023/10/13.
6 | //
7 |
8 | import UIKit
9 |
10 | public class JKPastedTextView: UITextView {
11 |
12 | /// 是否正在复制
13 | public var isPasting = false
14 |
15 | public override func paste(_ sender: Any?) {
16 | super.paste(sender)
17 | isPasting = true
18 | }
19 | }
20 |
--------------------------------------------------------------------------------
/Sources/Classes/SmallTools/JKTaskManager.swift:
--------------------------------------------------------------------------------
1 | //
2 | // JKTaskManager.swift
3 | // JKSwiftExtension
4 | //
5 | // Created by chongwang on 2025/2/5.
6 | // 任务管理器类,用于调度和取消延迟任务。
7 | import Foundation
8 | import Dispatch
9 | // MARK: - 任务管理器类,用于调度和取消延迟任务。
10 | /// 通过 `DispatchWorkItem` 实现任务的延迟执行,并支持任务取消。
11 | public class JKTaskManager {
12 |
13 | public init() { }
14 |
15 | // 存储任务标识符与对应的 DispatchWorkItem
16 | private var workItems: [String: DispatchWorkItem] = [:]
17 |
18 | /// 调度一个延迟任务。
19 | /// - Parameters:
20 | /// - identifier: 任务的唯一标识符。如果已存在相同标识符的任务,则取消旧任务。
21 | /// - delay: 任务的延迟时间(以秒为单位)。
22 | /// - task: 需要执行的任务闭包。
23 | public func scheduleTask(identifier: String, delay: TimeInterval, task: @escaping () -> Void) {
24 | // 取消已存在的相同标识符的任务
25 | cancelTask(identifier: identifier)
26 |
27 | // 创建一个 DispatchWorkItem,封装任务闭包
28 | let workItem = DispatchWorkItem {
29 | task()
30 | }
31 |
32 | // 将任务存储到字典中,以便后续取消
33 | workItems[identifier] = workItem
34 |
35 | // 在主队列中延迟执行任务
36 | DispatchQueue.main.asyncAfter(deadline: .now() + delay, execute: workItem)
37 | }
38 |
39 | /// 取消指定标识符的任务。
40 | /// - Parameter identifier: 需要取消的任务的唯一标识符。
41 | public func cancelTask(identifier: String) {
42 | // 检查是否存在对应标识符的任务
43 | if let workItem = workItems[identifier] {
44 | // 取消任务
45 | workItem.cancel()
46 | // 从字典中移除该任务
47 | workItems.removeValue(forKey: identifier)
48 | }
49 | }
50 | }
51 |
--------------------------------------------------------------------------------
/Sources/Classes/UIKitExtension/UIBarButtonItem+Extension.swift:
--------------------------------------------------------------------------------
1 | //
2 | // UIBarButtonItem+Extension.swift
3 | // nuannuan
4 | //
5 | // Created by 王冲 on 2019/12/1.
6 | // Copyright © 2019 王冲. All rights reserved.
7 | //
8 |
9 | import UIKit
10 | extension UIBarButtonItem: JKPOPCompatible {}
11 | // MARK: - 一、基本的扩展
12 | public extension JKPOP where Base: UIBarButtonItem {
13 |
14 | // MARK: 1.1、快捷创建 UIBarButtonItem
15 | static func createBarbuttonItem(name: String, target: Any?, action: Selector) -> UIBarButtonItem {
16 | let rightBtn = UIButton()
17 | rightBtn.setImage(UIImage(named: name), for: UIControl.State.normal)
18 | rightBtn.setImage(UIImage(named: name + "_highlighted"), for: UIControl.State.highlighted)
19 | // button自适应大小
20 | rightBtn.sizeToFit()
21 | rightBtn.addTarget(target, action: action, for: UIControl.Event.touchUpInside)
22 | return UIBarButtonItem(customView:rightBtn)
23 | }
24 |
25 | }
26 |
--------------------------------------------------------------------------------
/Sources/Classes/UIKitExtension/UIImageView+Extension.swift:
--------------------------------------------------------------------------------
1 | //
2 | // UIImageView+Extension.swift
3 | // JKSwiftExtension
4 | //
5 | // Created by IronMan on 2020/11/16.
6 | //
7 |
8 | import UIKit
9 | // MARK: - 一、加载 gif
10 | public extension JKPOP where Base: UIImageView {
11 |
12 | // MARK: 1.1、加载本地的gif图片
13 | /// 加载本地的gif图片
14 | /// - Parameter name: 图片的名字
15 | func loadGif(name: String) {
16 | DispatchQueue.global().async {
17 | let image = UIImage.jk.gif(name: name)
18 | DispatchQueue.main.async {
19 | self.base.image = image
20 | }
21 | }
22 | }
23 |
24 | // MARK: 1.2、加载 asset 里面的图片
25 | /// 加载 asset 里面的图片
26 | /// - Parameter asset: asset 里面的图片名字
27 | @available(iOS 9.0, *)
28 | func loadGif(asset: String) {
29 | DispatchQueue.global().async {
30 | let image = UIImage.jk.gif(asset: asset)
31 | DispatchQueue.main.async {
32 | self.base.image = image
33 | }
34 | }
35 | }
36 |
37 | // MARK: 1.3、加载网络 url 的 gif 图片
38 | /// 加载网络 url 的 gif 图片
39 | /// - Parameter url: gif图片的网络地址
40 | @available(iOS 9.0, *)
41 | func loadGif(url: String) {
42 | DispatchQueue.global().async {
43 | let image = UIImage.jk.gif(url: url)
44 | DispatchQueue.main.async {
45 | self.base.image = image
46 | }
47 | }
48 | }
49 | }
50 |
51 |
--------------------------------------------------------------------------------
/Sources/Classes/UIKitExtension/UIPageControl+Extension.swift:
--------------------------------------------------------------------------------
1 | //
2 | // UIPageControl+Extension.swift
3 | // JKSwiftExtension
4 | //
5 | // Created by IronMan on 2021/1/13.
6 | //
7 |
8 | import Foundation
9 | import UIKit
10 |
11 | public extension JKPOP where Base: UIPageControl {
12 |
13 | /// UIPageControl创建
14 | /// - Parameters:
15 | /// - rect: frame
16 | /// - numberOfPages: 页码数量
17 | /// - currentPage: 当前页码
18 | /// - currentPageIndicatorTintColor: 当前选中的颜色
19 | /// - pageIndicatorTintColor: 没有选中的颜色
20 | /// - Returns: UIPageControl
21 | static func create(_ rect: CGRect = .zero, numberOfPages: Int, currentPage: Int = 0, currentPageIndicatorTintColor: UIColor = .black, pageIndicatorTintColor: UIColor = .lightGray) -> UIPageControl {
22 | let view = UIPageControl(frame: rect)
23 | view.currentPageIndicatorTintColor = currentPageIndicatorTintColor
24 | view.pageIndicatorTintColor = pageIndicatorTintColor
25 | view.isUserInteractionEnabled = true
26 | view.hidesForSinglePage = true
27 | view.currentPage = 0
28 | view.numberOfPages = numberOfPages
29 | return view
30 | }
31 | }
32 |
--------------------------------------------------------------------------------
/Sources/Classes/UIKitExtension/UISlider+Extension.swift:
--------------------------------------------------------------------------------
1 | //
2 | // UISlider+Extension.swift
3 | // JKSwiftExtension
4 | //
5 | // Created by IronMan on 2021/1/5.
6 | //
7 |
8 | import UIKit
9 |
10 | //MARK:- 一、基本的扩展
11 | public extension JKPOP where Base: UISlider {
12 |
13 | // MARK: 1.1、UISlider的 闭包事件
14 | /// UISlider的 闭包事件
15 | /// - Parameters:
16 | /// - controlEvents: 事件类型,默认是 valueChanged
17 | /// - sliderCallBack: 闭包
18 | /// - Returns: 闭包内容
19 | func setHandle(controlEvents: UIControl.Event = .valueChanged, sliderCallBack: ((Float?) -> ())?) {
20 | base.swiftCallBack = sliderCallBack
21 | base.addTarget(base, action: #selector(base.sliderSwitchAction), for: controlEvents)
22 | }
23 | }
24 |
25 | private var sliderCallBackKey: Void?
26 | extension UISlider: JKSwiftPropertyCompatible {
27 | internal typealias T = Float
28 | internal var swiftCallBack: SwiftCallBack? {
29 | get { return jk_getAssociatedObject(self, &sliderCallBackKey) }
30 | set { jk_setRetainedAssociatedObject(self, &sliderCallBackKey, newValue) }
31 | }
32 |
33 | @objc internal func sliderSwitchAction(_ event: UISlider) {
34 | self.swiftCallBack?(event.value)
35 | }
36 | }
37 |
--------------------------------------------------------------------------------
/Sources/Classes/UIKitExtension/UISwitch+Extension.swift:
--------------------------------------------------------------------------------
1 | //
2 | // UISwitch+Extension.swift
3 | // JKSwiftExtension
4 | //
5 | // Created by IronMan on 2020/10/10.
6 | //
7 |
8 | import UIKit
9 |
10 | // MARK: - 一、基本的扩展
11 | public extension JKPOP where Base: UISwitch {
12 |
13 | // MARK: 1.1、开关切换
14 | /// 开关切换
15 | func toggle() {
16 | self.base.setOn(!self.base.isOn, animated: true)
17 | }
18 |
19 | // MARK: 1.2、开关事件
20 | /// 开关事件
21 | /// - Parameters:
22 | /// - controlEvents: 事件类型
23 | /// - switchCallBack: 事件闭包
24 | /// - Returns: 闭包函数
25 | func setHandle(controlEvents: UIControl.Event = .touchUpInside, switchCallBack: ((_ isOn: Bool?) -> ())?){
26 | base.swiftCallBack = switchCallBack
27 | base.addTarget(base, action: #selector(base.swiftSwitchAction), for: controlEvents)
28 | }
29 | }
30 |
31 | private var switchCallBackKey: Void?
32 | extension UISwitch: JKSwiftPropertyCompatible {
33 | internal typealias T = Bool
34 | internal var swiftCallBack: SwiftCallBack? {
35 | get { return jk_getAssociatedObject(self, &switchCallBackKey) }
36 | set { jk_setRetainedAssociatedObject(self, &switchCallBackKey, newValue) }
37 | }
38 |
39 | @objc internal func swiftSwitchAction(_ event: UISwitch) {
40 | self.swiftCallBack?(event.isOn)
41 | }
42 | }
43 |
--------------------------------------------------------------------------------
/Sources/Classes/UIKitExtension/UITabBar+Extension.swift:
--------------------------------------------------------------------------------
1 | //
2 | // UITabBar+Extension.swift
3 | // JKSwiftExtension
4 | //
5 | // Created by IronMan on 2021/1/13.
6 | //
7 |
8 | import UIKit
9 |
10 | //MARK: - 一、基本的扩展
11 | public extension JKPOP where Base: UITabBar {
12 | // MARK: 1.1、设置透明背景
13 | /// 设置透明背景
14 | func setTransparentBackground() {
15 | self.base.backgroundImage = UIImage()
16 | self.base.shadowImage = UIImage()
17 | self.base.isTranslucent = true
18 | }
19 | }
20 |
21 |
--------------------------------------------------------------------------------
/Sources/Classes/UIKitExtension/UITabBarController+Extension.swift:
--------------------------------------------------------------------------------
1 | //
2 | // UITabBarController+Extension.swift
3 | // JKSwiftExtension
4 | //
5 | // Created by IronMan on 2020/12/31.
6 | //
7 |
8 | import Foundation
9 | import UIKit
10 |
11 | // MARK: - 一、基本的扩展
12 | public extension JKPOP where Base: UITabBarController {
13 | // MARK: 1.1、当前选择索引
14 | /// 当前选择索引
15 | static var selectedIdx: Int {
16 | guard let keyWindow = UIApplication.jk.keyWindow,
17 | let rootController = keyWindow.rootViewController as? UITabBarController else { return 0}
18 | return rootController.selectedIndex
19 | }
20 |
21 | /// 用特定数据源刷新tabBar (暂时不可用)
22 | /// - Parameter list: 参照HomeViewController数据源
23 | fileprivate func reloadTabarItems(_ list: [[String]]) {
24 | for e in base.viewControllers!.enumerated(){
25 | let itemList = list[e.offset]
26 | let title = itemList[itemList.count - 4]
27 | let img = UIImage(named: itemList[itemList.count - 3])?.withRenderingMode(.alwaysOriginal)
28 | let imgH = UIImage(named: itemList[itemList.count - 2])?.withRenderingMode(.alwaysTemplate)
29 | e.element.tabBarItem = UITabBarItem(title: title, image: img, selectedImage: imgH)
30 | }
31 | }
32 | }
33 |
--------------------------------------------------------------------------------
/Sources/Classes/UIKitExtension/UITableViewCell+Extension.swift:
--------------------------------------------------------------------------------
1 | //
2 | // UITableViewCell+Extension.swift
3 | // JKSwiftExtension
4 | //
5 | // Created by IronMan on 2020/12/17.
6 | //
7 |
8 | import UIKit
9 |
10 | // MARK: - 一、基本的扩展
11 | public extension JKPOP where Base: UITableViewCell {
12 |
13 | // MARK: 返回cell所在的UITableView
14 | /// 返回cell所在的UITableView
15 | /// - Returns: cell 所在的UITableView
16 | func superTableView() -> UITableView? {
17 | for view in sequence(first: self.base.superview, next: { $0?.superview }) {
18 | if let tableView = view as? UITableView {
19 | return tableView
20 | }
21 | }
22 | return nil
23 | }
24 |
25 | // MARK: 标识符
26 | var identifier: String {
27 | get {
28 | let classStr = NSStringFromClass(Base.self)
29 | // 获取类名
30 | return classStr.components(separatedBy: ".").last!
31 | }
32 | }
33 | }
34 |
--------------------------------------------------------------------------------
/Sources/Classes/UIKitExtension/UIVisualEffectView+Extension.swift:
--------------------------------------------------------------------------------
1 | //
2 | // UIVisualEffectView+Extension.swift
3 | // JKSwiftExtension
4 | //
5 | // Created by 王冲 on 2022/3/26.
6 | //
7 |
8 | import Foundation
9 | import UIKit
10 |
11 | // MARK: - 一、基本的扩展
12 | public extension JKPOP where Base: UIVisualEffectView {
13 |
14 | // MARK: 1.1、创建一个UIVisualEffectView对象
15 | /// 创建一个UIVisualEffectView对象
16 | /// - Parameters:
17 | /// - size: UIVisualEffectView的size
18 | /// - alpha: 模糊透明度
19 | /// - style: 模糊样式
20 | /// - isAddVibrancy: 是否添加UIVibrancyEffect
21 | /// - Returns: 返回UIVisualEffectView
22 | static func visualEffectView(size: CGSize, alpha: CGFloat = 1.0, style: UIBlurEffect.Style = .light, isAddVibrancy: Bool = true) -> UIVisualEffectView {
23 | // 首先创建一个模糊效果
24 | let blurEffect = UIBlurEffect(style: style)
25 | // 接着创建一个承载模糊效果的视图
26 | let blurView = UIVisualEffectView(effect: blurEffect)
27 | // 毛玻璃的透明度
28 | blurView.alpha = alpha
29 | // 设置模糊视图的大小(全屏)
30 | blurView.frame.size = size
31 | // 创建并添加vibrancy视图
32 | if isAddVibrancy {
33 | /*
34 | UIVibrancyEffect 主要用于放大和调整UIVisualEffectView 视图下面的内容的颜色,同时让UIVisualEffectView的 contentView中的内容看起来更加生动。通常UIVibrancyEffect 对象是与UIBlurEffect一起使用
35 | */
36 | let vibrancyView = UIVisualEffectView(effect: UIVibrancyEffect(blurEffect: blurEffect))
37 | vibrancyView.frame.size = size
38 | blurView.contentView.addSubview(vibrancyView)
39 | }
40 | return blurView
41 | }
42 | }
43 |
--------------------------------------------------------------------------------
/_Pods.xcodeproj:
--------------------------------------------------------------------------------
1 | Example/Pods/Pods.xcodeproj
--------------------------------------------------------------------------------