├── LSTPopView ├── Assets │ └── .gitkeep └── Classes │ ├── .gitkeep │ └── Code │ ├── UIView+LSTPV.h │ └── UIView+LSTPV.m ├── _Pods.xcodeproj ├── Example ├── Tests │ ├── en.lproj │ │ └── InfoPlist.strings │ ├── Tests-Prefix.pch │ ├── Tests-Info.plist │ └── Tests.m ├── LSTPopView │ ├── en.lproj │ │ └── InfoPlist.strings │ ├── lst_logo.png │ ├── Images.xcassets │ │ ├── Contents.json │ │ ├── app启动示例 │ │ │ ├── Contents.json │ │ │ ├── indexAd.imageset │ │ │ │ ├── indexAd.png │ │ │ │ └── Contents.json │ │ │ ├── flashAd.imageset │ │ │ │ ├── 16074908758299.jpg │ │ │ │ └── Contents.json │ │ │ ├── appPrivacy.imageset │ │ │ │ ├── 16074912157167.jpg │ │ │ │ └── Contents.json │ │ │ ├── appUpate.imageset │ │ │ │ ├── 16074904068692.jpg │ │ │ │ └── Contents.json │ │ │ └── appPush.imageset │ │ │ │ ├── iShot2020-12-09下午02.04.31.png │ │ │ │ └── Contents.json │ │ ├── uc.imageset │ │ │ ├── uc.png │ │ │ └── Contents.json │ │ ├── 位置.imageset │ │ │ ├── 位置.png │ │ │ └── Contents.json │ │ ├── 转发.imageset │ │ │ ├── 转发.png │ │ │ └── Contents.json │ │ ├── 123.imageset │ │ │ ├── 123.png │ │ │ └── Contents.json │ │ ├── 附件.imageset │ │ │ ├── 附 件.png │ │ │ └── Contents.json │ │ ├── 1234.imageset │ │ │ ├── 1234.png │ │ │ └── Contents.json │ │ ├── love.imageset │ │ │ ├── love.png │ │ │ └── Contents.json │ │ ├── more.imageset │ │ │ ├── more.png │ │ │ └── Contents.json │ │ ├── test.imageset │ │ │ ├── test.jpg │ │ │ └── Contents.json │ │ ├── 定时发送.imageset │ │ │ ├── 定时发送.png │ │ │ └── Contents.json │ │ ├── baidu.imageset │ │ │ ├── baidu.png │ │ │ └── Contents.json │ │ ├── close.imageset │ │ │ ├── close.png │ │ │ └── Contents.json │ │ ├── headbg.imageset │ │ │ ├── headbg.jpg │ │ │ └── Contents.json │ │ ├── lst_logo.imageset │ │ │ ├── lst.jpeg │ │ │ └── Contents.json │ │ ├── phone.imageset │ │ │ ├── phone.png │ │ │ └── Contents.json │ │ ├── 抖音个人信息.imageset │ │ │ ├── 抖音个人信息.png │ │ │ └── Contents.json │ │ ├── nihoutao.imageset │ │ │ ├── nihoutao.jpg │ │ │ └── Contents.json │ │ ├── left_view.imageset │ │ │ ├── left_view.png │ │ │ └── Contents.json │ │ ├── nav_back.imageset │ │ │ ├── nav_back@2x.png │ │ │ ├── nav_back@3x.png │ │ │ └── Contents.json │ │ ├── nav_down.imageset │ │ │ ├── nav_down@2x.png │ │ │ ├── nav_down@3x.png │ │ │ └── Contents.json │ │ ├── nav_right.imageset │ │ │ ├── nav_right@2x.png │ │ │ ├── nav_right@3x.png │ │ │ └── Contents.json │ │ ├── 美女1.imageset │ │ │ ├── 211594347669_.pic_hd.png │ │ │ └── Contents.json │ │ ├── 美女2.imageset │ │ │ ├── 221594347766_.pic_hd.png │ │ │ └── Contents.json │ │ ├── 美女3.imageset │ │ │ ├── 231594347794_.pic_hd.png │ │ │ └── Contents.json │ │ └── AppIcon.appiconset │ │ │ ├── lstiPhoneApp_60pt@2x.png │ │ │ ├── lstiPhoneApp_60pt@3x.png │ │ │ ├── lstiPhoneSpootlight5_29pt@2x.png │ │ │ ├── lstiPhoneSpootlight5_29pt@3x.png │ │ │ ├── lstiPhoneSpootlight7_40pt@2x.png │ │ │ ├── lstiPhoneSpootlight7_40pt@3x.png │ │ │ ├── lstiPhoneNotification_20pt@2x.png │ │ │ ├── lstiPhoneNotification_20pt@3x.png │ │ │ └── Contents.json │ ├── LSTPopView │ │ ├── LSTTestView.h │ │ ├── app启动多窗口实例 │ │ │ ├── 打开推送 │ │ │ │ ├── LSTOpenPushView.h │ │ │ │ ├── LSTOpenPushView.m │ │ │ │ └── LSTOpenPushView.xib │ │ │ ├── 首页广告 │ │ │ │ ├── LSTIndexAdView.h │ │ │ │ ├── LSTIndexAdView.m │ │ │ │ └── LSTIndexAdView.xib │ │ │ ├── app更新 │ │ │ │ ├── LSTAppUpdateView.h │ │ │ │ ├── LSTAppUpdateView.m │ │ │ │ └── LSTAppUpdateView.xib │ │ │ ├── 用户隐私 │ │ │ │ ├── LSTAppPrivacyView.h │ │ │ │ ├── LSTAppPrivacyView.m │ │ │ │ └── LSTAppPrivacyView.xib │ │ │ ├── LSTLaunchMutiPopViewVC.h │ │ │ ├── 闪屏广告 │ │ │ │ ├── LSTAppFlashAdView.h │ │ │ │ ├── LSTAppFlashAdView.m │ │ │ │ └── LSTAppFlashAdView.xib │ │ │ └── LSTLaunchMutiPopViewVC.xib │ │ ├── 多窗口测试 │ │ │ ├── LSTMutiPopViewVC.h │ │ │ ├── LSTMutiPopView.h │ │ │ ├── LSTMutiPopView.m │ │ │ └── LSTMutiPopViewVC.m │ │ ├── 常用属性调试 │ │ │ ├── LSTPopViewTestVC.h │ │ │ ├── LSTPopViewTestView.h │ │ │ └── LSTPopViewTestView.m │ │ ├── 常用示例demo │ │ │ ├── QQ音乐顶部 │ │ │ │ ├── LSTPopViewQQView.h │ │ │ │ ├── LSTPopViewQQView.m │ │ │ │ └── LSTPopViewQQView.xib │ │ │ ├── LSTPopViewSceneVC.h │ │ │ ├── QQ顶部 │ │ │ │ ├── LSTPopViewqqtopView.h │ │ │ │ ├── LSTPopViewqqtopView.m │ │ │ │ └── LSTPopViewqqtopView.xib │ │ │ ├── uc分享 │ │ │ │ ├── LSTPopViewUCView.h │ │ │ │ └── LSTPopViewUCView.m │ │ │ ├── 抖音 │ │ │ │ ├── LSTPopViewdoyinView.h │ │ │ │ ├── LSTPopViewdoyinView.m │ │ │ │ └── LSTPopViewdoyinView.xib │ │ │ ├── 列表类型展示 │ │ │ │ ├── TableView │ │ │ │ │ ├── LSTPopViewTVView.h │ │ │ │ │ ├── LSTPopViewTVCellView.h │ │ │ │ │ ├── LSTPopViewTVCellView.m │ │ │ │ │ ├── LSTPopViewTVViewCell.h │ │ │ │ │ └── LSTPopViewTVViewCell.m │ │ │ │ └── CollectionView │ │ │ │ │ ├── LSTPopViewListView.h │ │ │ │ │ ├── LSTPopViewListCell.m │ │ │ │ │ ├── LSTPopViewListBuyView.h │ │ │ │ │ ├── LSTPopViewListBuyView.m │ │ │ │ │ ├── LSTPopViewListCell.h │ │ │ │ │ └── LSTPopViewListBuyView.xib │ │ │ ├── 百度云盘分类菜单 │ │ │ │ ├── LSTPopViewBaiDuView.h │ │ │ │ └── LSTPopViewBaiDuView.m │ │ │ ├── 类微信1微博底部弹框 │ │ │ │ ├── LSTPopViewWeChatView.h │ │ │ │ └── LSTPopViewWeChatView.m │ │ │ ├── 右侧栏 │ │ │ │ └── LSTPopViewrRSidebarView.h │ │ │ ├── 左侧边栏 │ │ │ │ ├── LSTPopViewrLSidebarView.h │ │ │ │ ├── LSTPopViewrLSidebarView.m │ │ │ │ └── LSTPopViewrLSidebarView.xib │ │ │ ├── 微信转发 │ │ │ │ ├── LSTPopViewTranspondView.h │ │ │ │ └── LSTPopViewTranspondView.m │ │ │ ├── 加载指示器 │ │ │ │ ├── LSTPopViewLoadingCell.h │ │ │ │ ├── LSTPopViewloadingView.h │ │ │ │ ├── LSTPopViewloadingView.m │ │ │ │ ├── LSTPopViewLoadingCell.m │ │ │ │ └── LSTPopViewloadingView.xib │ │ │ ├── 动态高度变化 │ │ │ │ ├── LSTPopViewHeightChangeView.h │ │ │ │ └── LSTPopViewHeightChangeView.m │ │ │ ├── 中间输入框 │ │ │ │ ├── LSTPopViewCenterInputView.h │ │ │ │ └── LSTPopViewCenterInputView.m │ │ │ └── 底部输入框 │ │ │ │ ├── LSTPopViewBottomInputView.h │ │ │ │ ├── LSTPopViewBottomInputView.m │ │ │ │ └── LSTPopViewBottomInputView.xib │ │ ├── LSTPopViewVC.h │ │ ├── 规避键盘测试 │ │ │ ├── LSTAutoKeyboardVC.h │ │ │ ├── LSTKeyboardXibView.h │ │ │ ├── LSTKeyboardXibView.m │ │ │ └── LSTAutoKeyboardVC.m │ │ ├── 窗口优先级 │ │ │ ├── LSTPopViewPriorityVC.h │ │ │ ├── LSTPriorityView.h │ │ │ ├── LSTPriorityView.m │ │ │ └── LSTPopViewPriorityVC.xib │ │ ├── 定时器调试 │ │ │ ├── LSTPopViewTimerTestVC.h │ │ │ ├── LSTPopViewTimerView.h │ │ │ ├── LSTPopViewTimerView.m │ │ │ ├── LSTPopViewTimerView.xib │ │ │ └── LSTPopViewTimerTestVC.m │ │ ├── 窗口编队测试 │ │ │ ├── LSTPopViewGroupTestVC.h │ │ │ ├── LSTPopViewGroupTestView.h │ │ │ ├── LSTPopViewGroupTestView.m │ │ │ └── LSTPopViewGroupTestView.xib │ │ ├── popView内存管理调试 │ │ │ ├── LSTPopViewRAMVC.h │ │ │ └── LSTPopViewRAMVC.m │ │ ├── 拖拽轻扫手势示例 │ │ │ ├── LSTPopViewDragVC.h │ │ │ └── LSTPopViewDragVC.m │ │ ├── 生命周期(多代理) │ │ │ ├── LSTPopViewLifeCycleTestVC.h │ │ │ ├── LSTLifeCycleView.h │ │ │ ├── LSTPopViewLifeCycleTestVC.m │ │ │ └── LSTLifeCycleView.m │ │ ├── 纯代码自定义view │ │ │ ├── LSTPopViewCodeView.h │ │ │ └── LSTPopViewCodeView.m │ │ ├── XIB自定义View │ │ │ ├── LSTPopViewXibView.h │ │ │ ├── LSTPopViewXibView.m │ │ │ └── LSTPopViewXibView.xib │ │ ├── LSTModel.h │ │ ├── LSTTestView.m │ │ └── LSTModel.m │ ├── LSTAppDelegate.h │ ├── LSTPopView-Prefix.pch │ ├── Main │ │ ├── LSTBaseVC.h │ │ └── LSTBaseVC.m │ ├── main.m │ ├── LSTPopView-Info.plist │ ├── Base.lproj │ │ └── LaunchScreen.storyboard │ └── LSTAppDelegate.m ├── LSTPopViewSwift │ ├── Podfile.lock │ ├── LSTPopViewSwift │ │ ├── Assets.xcassets │ │ │ ├── Contents.json │ │ │ ├── AccentColor.colorset │ │ │ │ └── Contents.json │ │ │ └── AppIcon.appiconset │ │ │ │ └── Contents.json │ │ ├── ViewController.swift │ │ ├── AppDelegate.swift │ │ ├── Base.lproj │ │ │ ├── Main.storyboard │ │ │ └── LaunchScreen.storyboard │ │ ├── Info.plist │ │ └── SceneDelegate.swift │ ├── LSTPopViewSwift.xcodeproj │ │ └── project.xcworkspace │ │ │ ├── contents.xcworkspacedata │ │ │ └── xcshareddata │ │ │ └── IDEWorkspaceChecks.plist │ ├── Podfile │ └── LSTPopViewSwift.xcworkspace │ │ └── contents.xcworkspacedata ├── LSTPopView.xcodeproj │ ├── project.xcworkspace │ │ └── contents.xcworkspacedata │ └── xcshareddata │ │ └── xcschemes │ │ └── LSTPopView-Example.xcscheme ├── Podfile ├── LSTPopView.xcworkspace │ ├── contents.xcworkspacedata │ └── xcshareddata │ │ ├── IDEWorkspaceChecks.plist │ │ └── WorkspaceSettings.xcsettings └── Podfile.lock ├── .travis.yml ├── .gitignore ├── LICENSE ├── LSTPopView.podspec └── UPDATE_HISTORY.md /LSTPopView/Assets/.gitkeep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /LSTPopView/Classes/.gitkeep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /_Pods.xcodeproj: -------------------------------------------------------------------------------- 1 | Example/Pods/Pods.xcodeproj -------------------------------------------------------------------------------- /Example/Tests/en.lproj/InfoPlist.strings: -------------------------------------------------------------------------------- 1 | /* Localized versions of Info.plist keys */ 2 | 3 | -------------------------------------------------------------------------------- /Example/LSTPopView/en.lproj/InfoPlist.strings: -------------------------------------------------------------------------------- 1 | /* Localized versions of Info.plist keys */ 2 | 3 | -------------------------------------------------------------------------------- /Example/LSTPopView/lst_logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LoSenTrad/LSTPopView/HEAD/Example/LSTPopView/lst_logo.png -------------------------------------------------------------------------------- /Example/LSTPopViewSwift/Podfile.lock: -------------------------------------------------------------------------------- 1 | PODFILE CHECKSUM: 64aa498b849366679d632163789674ecdf43cb0b 2 | 3 | COCOAPODS: 1.10.0 4 | -------------------------------------------------------------------------------- /Example/LSTPopView/Images.xcassets/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "info" : { 3 | "author" : "xcode", 4 | "version" : 1 5 | } 6 | } 7 | -------------------------------------------------------------------------------- /Example/LSTPopView/Images.xcassets/app启动示例/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "info" : { 3 | "author" : "xcode", 4 | "version" : 1 5 | } 6 | } 7 | -------------------------------------------------------------------------------- /Example/LSTPopViewSwift/LSTPopViewSwift/Assets.xcassets/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "info" : { 3 | "author" : "xcode", 4 | "version" : 1 5 | } 6 | } 7 | -------------------------------------------------------------------------------- /Example/LSTPopView/Images.xcassets/uc.imageset/uc.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LoSenTrad/LSTPopView/HEAD/Example/LSTPopView/Images.xcassets/uc.imageset/uc.png -------------------------------------------------------------------------------- /Example/LSTPopView/Images.xcassets/位置.imageset/位置.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LoSenTrad/LSTPopView/HEAD/Example/LSTPopView/Images.xcassets/位置.imageset/位置.png -------------------------------------------------------------------------------- /Example/LSTPopView/Images.xcassets/转发.imageset/转发.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LoSenTrad/LSTPopView/HEAD/Example/LSTPopView/Images.xcassets/转发.imageset/转发.png -------------------------------------------------------------------------------- /Example/LSTPopView/Images.xcassets/123.imageset/123.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LoSenTrad/LSTPopView/HEAD/Example/LSTPopView/Images.xcassets/123.imageset/123.png -------------------------------------------------------------------------------- /Example/LSTPopView/Images.xcassets/附件.imageset/附 件.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LoSenTrad/LSTPopView/HEAD/Example/LSTPopView/Images.xcassets/附件.imageset/附 件.png -------------------------------------------------------------------------------- /Example/LSTPopView/Images.xcassets/1234.imageset/1234.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LoSenTrad/LSTPopView/HEAD/Example/LSTPopView/Images.xcassets/1234.imageset/1234.png -------------------------------------------------------------------------------- /Example/LSTPopView/Images.xcassets/love.imageset/love.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LoSenTrad/LSTPopView/HEAD/Example/LSTPopView/Images.xcassets/love.imageset/love.png -------------------------------------------------------------------------------- /Example/LSTPopView/Images.xcassets/more.imageset/more.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LoSenTrad/LSTPopView/HEAD/Example/LSTPopView/Images.xcassets/more.imageset/more.png -------------------------------------------------------------------------------- /Example/LSTPopView/Images.xcassets/test.imageset/test.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LoSenTrad/LSTPopView/HEAD/Example/LSTPopView/Images.xcassets/test.imageset/test.jpg -------------------------------------------------------------------------------- /Example/LSTPopView/Images.xcassets/定时发送.imageset/定时发送.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LoSenTrad/LSTPopView/HEAD/Example/LSTPopView/Images.xcassets/定时发送.imageset/定时发送.png -------------------------------------------------------------------------------- /Example/LSTPopView/Images.xcassets/baidu.imageset/baidu.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LoSenTrad/LSTPopView/HEAD/Example/LSTPopView/Images.xcassets/baidu.imageset/baidu.png -------------------------------------------------------------------------------- /Example/LSTPopView/Images.xcassets/close.imageset/close.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LoSenTrad/LSTPopView/HEAD/Example/LSTPopView/Images.xcassets/close.imageset/close.png -------------------------------------------------------------------------------- /Example/LSTPopView/Images.xcassets/headbg.imageset/headbg.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LoSenTrad/LSTPopView/HEAD/Example/LSTPopView/Images.xcassets/headbg.imageset/headbg.jpg -------------------------------------------------------------------------------- /Example/LSTPopView/Images.xcassets/lst_logo.imageset/lst.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LoSenTrad/LSTPopView/HEAD/Example/LSTPopView/Images.xcassets/lst_logo.imageset/lst.jpeg -------------------------------------------------------------------------------- /Example/LSTPopView/Images.xcassets/phone.imageset/phone.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LoSenTrad/LSTPopView/HEAD/Example/LSTPopView/Images.xcassets/phone.imageset/phone.png -------------------------------------------------------------------------------- /Example/LSTPopView/Images.xcassets/抖音个人信息.imageset/抖音个人信息.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LoSenTrad/LSTPopView/HEAD/Example/LSTPopView/Images.xcassets/抖音个人信息.imageset/抖音个人信息.png -------------------------------------------------------------------------------- /Example/LSTPopView/Images.xcassets/nihoutao.imageset/nihoutao.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LoSenTrad/LSTPopView/HEAD/Example/LSTPopView/Images.xcassets/nihoutao.imageset/nihoutao.jpg -------------------------------------------------------------------------------- /Example/LSTPopView/Images.xcassets/left_view.imageset/left_view.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LoSenTrad/LSTPopView/HEAD/Example/LSTPopView/Images.xcassets/left_view.imageset/left_view.png -------------------------------------------------------------------------------- /Example/LSTPopView/Images.xcassets/nav_back.imageset/nav_back@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LoSenTrad/LSTPopView/HEAD/Example/LSTPopView/Images.xcassets/nav_back.imageset/nav_back@2x.png -------------------------------------------------------------------------------- /Example/LSTPopView/Images.xcassets/nav_back.imageset/nav_back@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LoSenTrad/LSTPopView/HEAD/Example/LSTPopView/Images.xcassets/nav_back.imageset/nav_back@3x.png -------------------------------------------------------------------------------- /Example/LSTPopView/Images.xcassets/nav_down.imageset/nav_down@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LoSenTrad/LSTPopView/HEAD/Example/LSTPopView/Images.xcassets/nav_down.imageset/nav_down@2x.png -------------------------------------------------------------------------------- /Example/LSTPopView/Images.xcassets/nav_down.imageset/nav_down@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LoSenTrad/LSTPopView/HEAD/Example/LSTPopView/Images.xcassets/nav_down.imageset/nav_down@3x.png -------------------------------------------------------------------------------- /Example/Tests/Tests-Prefix.pch: -------------------------------------------------------------------------------- 1 | // The contents of this file are implicitly included at the beginning of every test case source file. 2 | 3 | #ifdef __OBJC__ 4 | 5 | 6 | 7 | #endif 8 | -------------------------------------------------------------------------------- /Example/LSTPopView/Images.xcassets/app启动示例/indexAd.imageset/indexAd.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LoSenTrad/LSTPopView/HEAD/Example/LSTPopView/Images.xcassets/app启动示例/indexAd.imageset/indexAd.png -------------------------------------------------------------------------------- /Example/LSTPopView/Images.xcassets/nav_right.imageset/nav_right@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LoSenTrad/LSTPopView/HEAD/Example/LSTPopView/Images.xcassets/nav_right.imageset/nav_right@2x.png -------------------------------------------------------------------------------- /Example/LSTPopView/Images.xcassets/nav_right.imageset/nav_right@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LoSenTrad/LSTPopView/HEAD/Example/LSTPopView/Images.xcassets/nav_right.imageset/nav_right@3x.png -------------------------------------------------------------------------------- /Example/LSTPopView/Images.xcassets/美女1.imageset/211594347669_.pic_hd.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LoSenTrad/LSTPopView/HEAD/Example/LSTPopView/Images.xcassets/美女1.imageset/211594347669_.pic_hd.png -------------------------------------------------------------------------------- /Example/LSTPopView/Images.xcassets/美女2.imageset/221594347766_.pic_hd.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LoSenTrad/LSTPopView/HEAD/Example/LSTPopView/Images.xcassets/美女2.imageset/221594347766_.pic_hd.png -------------------------------------------------------------------------------- /Example/LSTPopView/Images.xcassets/美女3.imageset/231594347794_.pic_hd.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LoSenTrad/LSTPopView/HEAD/Example/LSTPopView/Images.xcassets/美女3.imageset/231594347794_.pic_hd.png -------------------------------------------------------------------------------- /Example/LSTPopView/Images.xcassets/AppIcon.appiconset/lstiPhoneApp_60pt@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LoSenTrad/LSTPopView/HEAD/Example/LSTPopView/Images.xcassets/AppIcon.appiconset/lstiPhoneApp_60pt@2x.png -------------------------------------------------------------------------------- /Example/LSTPopView/Images.xcassets/AppIcon.appiconset/lstiPhoneApp_60pt@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LoSenTrad/LSTPopView/HEAD/Example/LSTPopView/Images.xcassets/AppIcon.appiconset/lstiPhoneApp_60pt@3x.png -------------------------------------------------------------------------------- /Example/LSTPopView/Images.xcassets/app启动示例/flashAd.imageset/16074908758299.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LoSenTrad/LSTPopView/HEAD/Example/LSTPopView/Images.xcassets/app启动示例/flashAd.imageset/16074908758299.jpg -------------------------------------------------------------------------------- /Example/LSTPopView/Images.xcassets/app启动示例/appPrivacy.imageset/16074912157167.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LoSenTrad/LSTPopView/HEAD/Example/LSTPopView/Images.xcassets/app启动示例/appPrivacy.imageset/16074912157167.jpg -------------------------------------------------------------------------------- /Example/LSTPopView/Images.xcassets/app启动示例/appUpate.imageset/16074904068692.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LoSenTrad/LSTPopView/HEAD/Example/LSTPopView/Images.xcassets/app启动示例/appUpate.imageset/16074904068692.jpg -------------------------------------------------------------------------------- /Example/LSTPopView/Images.xcassets/AppIcon.appiconset/lstiPhoneSpootlight5_29pt@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LoSenTrad/LSTPopView/HEAD/Example/LSTPopView/Images.xcassets/AppIcon.appiconset/lstiPhoneSpootlight5_29pt@2x.png -------------------------------------------------------------------------------- /Example/LSTPopView/Images.xcassets/AppIcon.appiconset/lstiPhoneSpootlight5_29pt@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LoSenTrad/LSTPopView/HEAD/Example/LSTPopView/Images.xcassets/AppIcon.appiconset/lstiPhoneSpootlight5_29pt@3x.png -------------------------------------------------------------------------------- /Example/LSTPopView/Images.xcassets/AppIcon.appiconset/lstiPhoneSpootlight7_40pt@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LoSenTrad/LSTPopView/HEAD/Example/LSTPopView/Images.xcassets/AppIcon.appiconset/lstiPhoneSpootlight7_40pt@2x.png -------------------------------------------------------------------------------- /Example/LSTPopView/Images.xcassets/AppIcon.appiconset/lstiPhoneSpootlight7_40pt@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LoSenTrad/LSTPopView/HEAD/Example/LSTPopView/Images.xcassets/AppIcon.appiconset/lstiPhoneSpootlight7_40pt@3x.png -------------------------------------------------------------------------------- /Example/LSTPopView/Images.xcassets/AppIcon.appiconset/lstiPhoneNotification_20pt@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LoSenTrad/LSTPopView/HEAD/Example/LSTPopView/Images.xcassets/AppIcon.appiconset/lstiPhoneNotification_20pt@2x.png -------------------------------------------------------------------------------- /Example/LSTPopView/Images.xcassets/AppIcon.appiconset/lstiPhoneNotification_20pt@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LoSenTrad/LSTPopView/HEAD/Example/LSTPopView/Images.xcassets/AppIcon.appiconset/lstiPhoneNotification_20pt@3x.png -------------------------------------------------------------------------------- /Example/LSTPopView/Images.xcassets/app启动示例/appPush.imageset/iShot2020-12-09下午02.04.31.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LoSenTrad/LSTPopView/HEAD/Example/LSTPopView/Images.xcassets/app启动示例/appPush.imageset/iShot2020-12-09下午02.04.31.png -------------------------------------------------------------------------------- /Example/LSTPopView.xcodeproj/project.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /Example/LSTPopViewSwift/LSTPopViewSwift.xcodeproj/project.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /Example/LSTPopViewSwift/LSTPopViewSwift/Assets.xcassets/AccentColor.colorset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "colors" : [ 3 | { 4 | "idiom" : "universal" 5 | } 6 | ], 7 | "info" : { 8 | "author" : "xcode", 9 | "version" : 1 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /Example/Podfile: -------------------------------------------------------------------------------- 1 | 2 | platform :ios, '8.0' 3 | 4 | target 'LSTPopView_Example' do 5 | pod 'LSTPopView', :path => '../' 6 | pod 'LSTCategory' 7 | pod 'Masonry' 8 | pod 'Bugly' 9 | 10 | 11 | target 'LSTPopView_Tests' do 12 | inherit! :search_paths 13 | 14 | 15 | end 16 | end 17 | -------------------------------------------------------------------------------- /Example/LSTPopViewSwift/Podfile: -------------------------------------------------------------------------------- 1 | # Uncomment the next line to define a global platform for your project 2 | # platform :ios, '9.0' 3 | 4 | target 'LSTPopViewSwift' do 5 | # Comment the next line if you don't want to use dynamic frameworks 6 | use_frameworks! 7 | 8 | # Pods for LSTPopViewSwift 9 | 10 | end 11 | -------------------------------------------------------------------------------- /Example/LSTPopView.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /Example/LSTPopView.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | IDEDidComputeMac32BitWarning 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /Example/LSTPopViewSwift/LSTPopViewSwift.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /Example/LSTPopViewSwift/LSTPopViewSwift.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | IDEDidComputeMac32BitWarning 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /Example/LSTPopView/LSTPopView/LSTTestView.h: -------------------------------------------------------------------------------- 1 | // 2 | // LSTTestView.h 3 | // LSTPopView_Example 4 | // 5 | // Created by LoSenTrad on 2020/11/19. 6 | // Copyright © 2020 490790096@qq.com. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | NS_ASSUME_NONNULL_BEGIN 12 | 13 | @interface LSTTestView : UIView 14 | 15 | @end 16 | 17 | NS_ASSUME_NONNULL_END 18 | -------------------------------------------------------------------------------- /Example/LSTPopView/LSTAppDelegate.h: -------------------------------------------------------------------------------- 1 | // 2 | // LSTAppDelegate.h 3 | // LSTPopView 4 | // 5 | // Created by 490790096@qq.com on 03/06/2020. 6 | // Copyright (c) 2020 490790096@qq.com. All rights reserved. 7 | // 8 | 9 | @import UIKit; 10 | 11 | @interface LSTAppDelegate : UIResponder 12 | 13 | @property (strong, nonatomic) UIWindow *window; 14 | 15 | @end 16 | -------------------------------------------------------------------------------- /Example/LSTPopView.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | BuildSystemType 6 | Original 7 | PreviewsEnabled 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /Example/LSTPopView/LSTPopView/app启动多窗口实例/打开推送/LSTOpenPushView.h: -------------------------------------------------------------------------------- 1 | // 2 | // LSTOpenPushView.h 3 | // LSTPopView_Example 4 | // 5 | // Created by LoSenTrad on 2020/12/9. 6 | // Copyright © 2020 490790096@qq.com. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | NS_ASSUME_NONNULL_BEGIN 12 | 13 | @interface LSTOpenPushView : UIView 14 | 15 | @end 16 | 17 | NS_ASSUME_NONNULL_END 18 | -------------------------------------------------------------------------------- /Example/LSTPopView/LSTPopView/app启动多窗口实例/首页广告/LSTIndexAdView.h: -------------------------------------------------------------------------------- 1 | // 2 | // LSTIndexAdView.h 3 | // LSTPopView_Example 4 | // 5 | // Created by LoSenTrad on 2020/12/9. 6 | // Copyright © 2020 490790096@qq.com. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | NS_ASSUME_NONNULL_BEGIN 12 | 13 | @interface LSTIndexAdView : UIView 14 | 15 | @end 16 | 17 | NS_ASSUME_NONNULL_END 18 | -------------------------------------------------------------------------------- /Example/LSTPopView/LSTPopView/app启动多窗口实例/app更新/LSTAppUpdateView.h: -------------------------------------------------------------------------------- 1 | // 2 | // LSTAppUpdateView.h 3 | // LSTPopView_Example 4 | // 5 | // Created by LoSenTrad on 2020/12/9. 6 | // Copyright © 2020 490790096@qq.com. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | NS_ASSUME_NONNULL_BEGIN 12 | 13 | @interface LSTAppUpdateView : UIView 14 | 15 | @end 16 | 17 | NS_ASSUME_NONNULL_END 18 | -------------------------------------------------------------------------------- /Example/LSTPopView/LSTPopView/多窗口测试/LSTMutiPopViewVC.h: -------------------------------------------------------------------------------- 1 | // 2 | // LSTMutiPopViewVC.h 3 | // LSTPopView_Example 4 | // 5 | // Created by LoSenTrad on 2020/3/31. 6 | // Copyright © 2020 490790096@qq.com. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | NS_ASSUME_NONNULL_BEGIN 12 | 13 | @interface LSTMutiPopViewVC : UIViewController 14 | 15 | @end 16 | 17 | NS_ASSUME_NONNULL_END 18 | -------------------------------------------------------------------------------- /Example/LSTPopView/LSTPopView/常用属性调试/LSTPopViewTestVC.h: -------------------------------------------------------------------------------- 1 | // 2 | // LSTPopViewTestVC.h 3 | // LSTAlertView_Example 4 | // 5 | // Created by LoSenTrad on 2020/2/5. 6 | // Copyright © 2020 490790096@qq.com. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | NS_ASSUME_NONNULL_BEGIN 12 | 13 | @interface LSTPopViewTestVC : UIViewController 14 | 15 | @end 16 | 17 | NS_ASSUME_NONNULL_END 18 | -------------------------------------------------------------------------------- /Example/LSTPopView/LSTPopView/常用示例demo/QQ音乐顶部/LSTPopViewQQView.h: -------------------------------------------------------------------------------- 1 | // 2 | // LSTPopViewQQView.h 3 | // LSTPopView_Example 4 | // 5 | // Created by LoSenTrad on 2020/4/23. 6 | // Copyright © 2020 490790096@qq.com. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | NS_ASSUME_NONNULL_BEGIN 12 | 13 | @interface LSTPopViewQQView : UIView 14 | 15 | @end 16 | 17 | NS_ASSUME_NONNULL_END 18 | -------------------------------------------------------------------------------- /Example/LSTPopView/LSTPopView/LSTPopViewVC.h: -------------------------------------------------------------------------------- 1 | // 2 | // LSTPopViewVC.h 3 | // LSTAlertView_Example 4 | // 5 | // Created by LoSenTrad on 2020/1/17. 6 | // Copyright © 2020 490790096@qq.com. All rights reserved. 7 | // 8 | 9 | #import 10 | #import "LSTBaseVC.h" 11 | NS_ASSUME_NONNULL_BEGIN 12 | 13 | @interface LSTPopViewVC : LSTBaseVC 14 | 15 | 16 | @end 17 | 18 | NS_ASSUME_NONNULL_END 19 | -------------------------------------------------------------------------------- /Example/LSTPopView/LSTPopView/app启动多窗口实例/用户隐私/LSTAppPrivacyView.h: -------------------------------------------------------------------------------- 1 | // 2 | // LSTAppPrivacyView.h 3 | // LSTPopView_Example 4 | // 5 | // Created by LoSenTrad on 2020/12/9. 6 | // Copyright © 2020 490790096@qq.com. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | NS_ASSUME_NONNULL_BEGIN 12 | 13 | @interface LSTAppPrivacyView : UIView 14 | 15 | @end 16 | 17 | NS_ASSUME_NONNULL_END 18 | -------------------------------------------------------------------------------- /Example/LSTPopView/LSTPopView/常用示例demo/LSTPopViewSceneVC.h: -------------------------------------------------------------------------------- 1 | // 2 | // LSTPopViewSceneVC.h 3 | // LSTPopView_Example 4 | // 5 | // Created by LoSenTrad on 2020/4/23. 6 | // Copyright © 2020 490790096@qq.com. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | NS_ASSUME_NONNULL_BEGIN 12 | 13 | @interface LSTPopViewSceneVC : UIViewController 14 | 15 | @end 16 | 17 | NS_ASSUME_NONNULL_END 18 | -------------------------------------------------------------------------------- /Example/LSTPopView/LSTPopView/常用示例demo/QQ顶部/LSTPopViewqqtopView.h: -------------------------------------------------------------------------------- 1 | // 2 | // LSTPopViewqqView.h 3 | // LSTPopView_Example 4 | // 5 | // Created by LoSenTrad on 2020/4/24. 6 | // Copyright © 2020 490790096@qq.com. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | NS_ASSUME_NONNULL_BEGIN 12 | 13 | @interface LSTPopViewqqtopView : UIView 14 | 15 | @end 16 | 17 | NS_ASSUME_NONNULL_END 18 | -------------------------------------------------------------------------------- /Example/LSTPopView/LSTPopView/常用示例demo/uc分享/LSTPopViewUCView.h: -------------------------------------------------------------------------------- 1 | // 2 | // LSTPopViewTranspondView.h 3 | // LSTPopView_Example 4 | // 5 | // Created by LoSenTrad on 2020/4/24. 6 | // Copyright © 2020 490790096@qq.com. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | NS_ASSUME_NONNULL_BEGIN 12 | 13 | @interface LSTPopViewUCView : UIView 14 | 15 | @end 16 | 17 | NS_ASSUME_NONNULL_END 18 | -------------------------------------------------------------------------------- /Example/LSTPopView/LSTPopView/常用示例demo/抖音/LSTPopViewdoyinView.h: -------------------------------------------------------------------------------- 1 | // 2 | // LSTPopViewdoyinView.h 3 | // LSTPopView_Example 4 | // 5 | // Created by LoSenTrad on 2020/4/27. 6 | // Copyright © 2020 490790096@qq.com. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | NS_ASSUME_NONNULL_BEGIN 12 | 13 | @interface LSTPopViewdoyinView : UIView 14 | 15 | @end 16 | 17 | NS_ASSUME_NONNULL_END 18 | -------------------------------------------------------------------------------- /Example/LSTPopView/LSTPopView/规避键盘测试/LSTAutoKeyboardVC.h: -------------------------------------------------------------------------------- 1 | // 2 | // LSTAutoKeyboardVC.h 3 | // LSTPopView_Example 4 | // 5 | // Created by LoSenTrad on 2020/4/15. 6 | // Copyright © 2020 490790096@qq.com. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | NS_ASSUME_NONNULL_BEGIN 12 | 13 | @interface LSTAutoKeyboardVC : UIViewController 14 | 15 | @end 16 | 17 | NS_ASSUME_NONNULL_END 18 | -------------------------------------------------------------------------------- /Example/LSTPopView/LSTPopView/常用示例demo/列表类型展示/TableView/LSTPopViewTVView.h: -------------------------------------------------------------------------------- 1 | // 2 | // LSTPopViewTVView.h 3 | // LSTPopView_Example 4 | // 5 | // Created by LoSenTrad on 2020/8/5. 6 | // Copyright © 2020 490790096@qq.com. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | NS_ASSUME_NONNULL_BEGIN 12 | 13 | @interface LSTPopViewTVView : UIView 14 | 15 | @end 16 | 17 | NS_ASSUME_NONNULL_END 18 | -------------------------------------------------------------------------------- /Example/LSTPopView/LSTPopView/窗口优先级/LSTPopViewPriorityVC.h: -------------------------------------------------------------------------------- 1 | // 2 | // LSTPopViewPriorityVC.h 3 | // LSTPopView_Example 4 | // 5 | // Created by LoSenTrad on 2020/5/22. 6 | // Copyright © 2020 490790096@qq.com. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | NS_ASSUME_NONNULL_BEGIN 12 | 13 | @interface LSTPopViewPriorityVC : UIViewController 14 | 15 | @end 16 | 17 | NS_ASSUME_NONNULL_END 18 | -------------------------------------------------------------------------------- /Example/LSTPopView/LSTPopView/定时器调试/LSTPopViewTimerTestVC.h: -------------------------------------------------------------------------------- 1 | // 2 | // LSTPopViewTimerTestVC.h 3 | // LSTPopView_Example 4 | // 5 | // Created by LoSenTrad on 2020/7/10. 6 | // Copyright © 2020 490790096@qq.com. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | NS_ASSUME_NONNULL_BEGIN 12 | 13 | @interface LSTPopViewTimerTestVC : UIViewController 14 | 15 | @end 16 | 17 | NS_ASSUME_NONNULL_END 18 | -------------------------------------------------------------------------------- /Example/LSTPopView/LSTPopView/常用示例demo/百度云盘分类菜单/LSTPopViewBaiDuView.h: -------------------------------------------------------------------------------- 1 | // 2 | // LSTPopViewTranspondView.h 3 | // LSTPopView_Example 4 | // 5 | // Created by LoSenTrad on 2020/4/24. 6 | // Copyright © 2020 490790096@qq.com. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | NS_ASSUME_NONNULL_BEGIN 12 | 13 | @interface LSTPopViewBaiDuView : UIView 14 | 15 | @end 16 | 17 | NS_ASSUME_NONNULL_END 18 | -------------------------------------------------------------------------------- /Example/LSTPopView/LSTPopView/常用示例demo/类微信1微博底部弹框/LSTPopViewWeChatView.h: -------------------------------------------------------------------------------- 1 | // 2 | // LSTPopViewWeChatView.h 3 | // LSTPopView_Example 4 | // 5 | // Created by LoSenTrad on 2020/4/24. 6 | // Copyright © 2020 490790096@qq.com. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | NS_ASSUME_NONNULL_BEGIN 12 | 13 | @interface LSTPopViewWeChatView : UIView 14 | 15 | @end 16 | 17 | NS_ASSUME_NONNULL_END 18 | -------------------------------------------------------------------------------- /Example/LSTPopView/LSTPopView/窗口编队测试/LSTPopViewGroupTestVC.h: -------------------------------------------------------------------------------- 1 | // 2 | // LSTPopViewGroupTestVC.h 3 | // LSTPopView_Example 4 | // 5 | // Created by LoSenTrad on 2020/5/3. 6 | // Copyright © 2020 490790096@qq.com. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | NS_ASSUME_NONNULL_BEGIN 12 | 13 | @interface LSTPopViewGroupTestVC : UIViewController 14 | 15 | @end 16 | 17 | NS_ASSUME_NONNULL_END 18 | -------------------------------------------------------------------------------- /Example/LSTPopViewSwift/LSTPopViewSwift/ViewController.swift: -------------------------------------------------------------------------------- 1 | // 2 | // ViewController.swift 3 | // LSTPopViewSwift 4 | // 5 | // Created by LoSenTrad on 2021/3/2. 6 | // 7 | 8 | import UIKit 9 | 10 | class ViewController: UIViewController { 11 | 12 | override func viewDidLoad() { 13 | super.viewDidLoad() 14 | // Do any additional setup after loading the view. 15 | } 16 | 17 | 18 | } 19 | 20 | -------------------------------------------------------------------------------- /Example/LSTPopView/LSTPopView-Prefix.pch: -------------------------------------------------------------------------------- 1 | // 2 | // Prefix header 3 | // 4 | // The contents of this file are implicitly included at the beginning of every source file. 5 | // 6 | 7 | #import 8 | 9 | #ifndef __IPHONE_5_0 10 | #warning "This project uses features only available in iOS SDK 5.0 and later." 11 | #endif 12 | 13 | #ifdef __OBJC__ 14 | @import UIKit; 15 | @import Foundation; 16 | #endif 17 | -------------------------------------------------------------------------------- /Example/LSTPopView/LSTPopView/常用示例demo/右侧栏/LSTPopViewrRSidebarView.h: -------------------------------------------------------------------------------- 1 | // 2 | // LSTPopViewrRSidebarView.h 3 | // LSTPopView_Example 4 | // 5 | // Created by LoSenTrad on 2020/4/24. 6 | // Copyright © 2020 490790096@qq.com. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | NS_ASSUME_NONNULL_BEGIN 12 | 13 | @interface LSTPopViewrRSidebarView : UIView 14 | 15 | @end 16 | 17 | NS_ASSUME_NONNULL_END 18 | -------------------------------------------------------------------------------- /Example/LSTPopView/LSTPopView/常用示例demo/左侧边栏/LSTPopViewrLSidebarView.h: -------------------------------------------------------------------------------- 1 | // 2 | // LSTPopViewrLSidebarView.h 3 | // LSTPopView_Example 4 | // 5 | // Created by LoSenTrad on 2020/4/24. 6 | // Copyright © 2020 490790096@qq.com. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | NS_ASSUME_NONNULL_BEGIN 12 | 13 | @interface LSTPopViewrLSidebarView : UIView 14 | 15 | @end 16 | 17 | NS_ASSUME_NONNULL_END 18 | -------------------------------------------------------------------------------- /Example/LSTPopView/LSTPopView/常用示例demo/微信转发/LSTPopViewTranspondView.h: -------------------------------------------------------------------------------- 1 | // 2 | // LSTPopViewTranspondView.h 3 | // LSTPopView_Example 4 | // 5 | // Created by LoSenTrad on 2020/4/24. 6 | // Copyright © 2020 490790096@qq.com. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | NS_ASSUME_NONNULL_BEGIN 12 | 13 | @interface LSTPopViewTranspondView : UIView 14 | 15 | @end 16 | 17 | NS_ASSUME_NONNULL_END 18 | -------------------------------------------------------------------------------- /Example/LSTPopView/Main/LSTBaseVC.h: -------------------------------------------------------------------------------- 1 | // 2 | // LSTBaseVC.h 3 | // LSTAlertView_Example 4 | // 5 | // Created by LoSenTrad on 2020/1/17. 6 | // Copyright © 2020 490790096@qq.com. All rights reserved. 7 | // 8 | 9 | #import 10 | #import 11 | #import 12 | 13 | NS_ASSUME_NONNULL_BEGIN 14 | 15 | @interface LSTBaseVC : UIViewController 16 | 17 | @end 18 | 19 | NS_ASSUME_NONNULL_END 20 | -------------------------------------------------------------------------------- /Example/LSTPopView/LSTPopView/popView内存管理调试/LSTPopViewRAMVC.h: -------------------------------------------------------------------------------- 1 | // 2 | // LSTPopViewRAMVC.h 3 | // LSTPopView_Example 4 | // 5 | // Created by LoSenTrad on 2020/4/21. 6 | // Copyright © 2020 490790096@qq.com. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | NS_ASSUME_NONNULL_BEGIN 12 | 13 | @interface LSTPopViewRAMVC : UIViewController 14 | 15 | 16 | 17 | 18 | @end 19 | 20 | NS_ASSUME_NONNULL_END 21 | -------------------------------------------------------------------------------- /Example/LSTPopView/LSTPopView/常用示例demo/列表类型展示/CollectionView/LSTPopViewListView.h: -------------------------------------------------------------------------------- 1 | // 2 | // LSTPopViewListView.h 3 | // LSTPopView_Example 4 | // 5 | // Created by LoSenTrad on 2020/7/10. 6 | // Copyright © 2020 490790096@qq.com. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | NS_ASSUME_NONNULL_BEGIN 12 | 13 | @interface LSTPopViewListView : UIView 14 | 15 | @end 16 | 17 | NS_ASSUME_NONNULL_END 18 | 19 | -------------------------------------------------------------------------------- /Example/LSTPopView/LSTPopView/常用示例demo/加载指示器/LSTPopViewLoadingCell.h: -------------------------------------------------------------------------------- 1 | // 2 | // LSTPopViewLoadingCell.h 3 | // LSTPopView_Example 4 | // 5 | // Created by LoSenTrad on 2020/4/24. 6 | // Copyright © 2020 490790096@qq.com. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | NS_ASSUME_NONNULL_BEGIN 12 | 13 | @interface LSTPopViewLoadingCell : UITableViewCell 14 | 15 | @end 16 | 17 | NS_ASSUME_NONNULL_END 18 | -------------------------------------------------------------------------------- /Example/LSTPopView/LSTPopView/拖拽轻扫手势示例/LSTPopViewDragVC.h: -------------------------------------------------------------------------------- 1 | // 2 | // LSTPopViewDragVC.h 3 | // LSTPopView_Example 4 | // 5 | // Created by LoSenTrad on 2021/2/25. 6 | // Copyright © 2021 490790096@qq.com. All rights reserved. 7 | // 8 | 9 | #import 10 | #import "LSTBaseVC.h" 11 | 12 | NS_ASSUME_NONNULL_BEGIN 13 | 14 | @interface LSTPopViewDragVC : LSTBaseVC 15 | 16 | @end 17 | 18 | NS_ASSUME_NONNULL_END 19 | -------------------------------------------------------------------------------- /Example/LSTPopView/LSTPopView/常用示例demo/列表类型展示/TableView/LSTPopViewTVCellView.h: -------------------------------------------------------------------------------- 1 | // 2 | // LSTPopViewTVCellView.h 3 | // LSTPopView_Example 4 | // 5 | // Created by LoSenTrad on 2020/12/16. 6 | // Copyright © 2020 490790096@qq.com. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | NS_ASSUME_NONNULL_BEGIN 12 | 13 | @interface LSTPopViewTVCellView : UITableViewCell 14 | 15 | @end 16 | 17 | NS_ASSUME_NONNULL_END 18 | -------------------------------------------------------------------------------- /Example/LSTPopView/LSTPopView/常用示例demo/动态高度变化/LSTPopViewHeightChangeView.h: -------------------------------------------------------------------------------- 1 | // 2 | // LSTPopViewHeightChangeView.h 3 | // LSTPopView_Example 4 | // 5 | // Created by LoSenTrad on 2021/2/26. 6 | // Copyright © 2021 490790096@qq.com. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | NS_ASSUME_NONNULL_BEGIN 12 | 13 | @interface LSTPopViewHeightChangeView : UIView 14 | 15 | @end 16 | 17 | NS_ASSUME_NONNULL_END 18 | -------------------------------------------------------------------------------- /Example/LSTPopView/LSTPopView/生命周期(多代理)/LSTPopViewLifeCycleTestVC.h: -------------------------------------------------------------------------------- 1 | // 2 | // LSTPopViewLifeCycleTestVC.h 3 | // LSTPopView_Example 4 | // 5 | // Created by LoSenTrad on 2020/6/5. 6 | // Copyright © 2020 490790096@qq.com. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | NS_ASSUME_NONNULL_BEGIN 12 | 13 | @interface LSTPopViewLifeCycleTestVC : UIViewController 14 | 15 | @end 16 | 17 | NS_ASSUME_NONNULL_END 18 | -------------------------------------------------------------------------------- /Example/LSTPopView/Images.xcassets/123.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "filename" : "123.png", 6 | "scale" : "1x" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "scale" : "3x" 15 | } 16 | ], 17 | "info" : { 18 | "version" : 1, 19 | "author" : "xcode" 20 | } 21 | } -------------------------------------------------------------------------------- /Example/LSTPopView/main.m: -------------------------------------------------------------------------------- 1 | // 2 | // main.m 3 | // LSTPopView 4 | // 5 | // Created by 490790096@qq.com on 03/06/2020. 6 | // Copyright (c) 2020 490790096@qq.com. All rights reserved. 7 | // 8 | 9 | @import UIKit; 10 | #import "LSTAppDelegate.h" 11 | 12 | int main(int argc, char * argv[]) 13 | { 14 | @autoreleasepool { 15 | return UIApplicationMain(argc, argv, nil, NSStringFromClass([LSTAppDelegate class])); 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /Example/LSTPopView/Images.xcassets/1234.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "filename" : "1234.png", 6 | "scale" : "1x" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "scale" : "3x" 15 | } 16 | ], 17 | "info" : { 18 | "version" : 1, 19 | "author" : "xcode" 20 | } 21 | } -------------------------------------------------------------------------------- /Example/LSTPopView/Images.xcassets/close.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "filename" : "close.png", 6 | "scale" : "1x" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "scale" : "3x" 15 | } 16 | ], 17 | "info" : { 18 | "version" : 1, 19 | "author" : "xcode" 20 | } 21 | } -------------------------------------------------------------------------------- /Example/LSTPopView/Images.xcassets/uc.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "filename" : "uc.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/LSTPopView/Images.xcassets/位置.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "filename" : "位置.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/LSTPopView/Images.xcassets/转发.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "filename" : "转发.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/LSTPopView/Images.xcassets/附件.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "filename" : "附 件.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/LSTPopView/Images.xcassets/baidu.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "filename" : "baidu.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/LSTPopView/Images.xcassets/love.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "filename" : "love.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/LSTPopView/Images.xcassets/more.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "filename" : "more.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/LSTPopView/Images.xcassets/phone.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "filename" : "phone.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/LSTPopView/Images.xcassets/test.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "filename" : "test.jpg", 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/LSTPopView/Images.xcassets/定时发送.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "filename" : "定时发送.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/LSTPopView/Images.xcassets/headbg.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "filename" : "headbg.jpg", 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/LSTPopView/Images.xcassets/lst_logo.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "filename" : "lst.jpeg", 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/LSTPopView/Images.xcassets/nihoutao.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "filename" : "nihoutao.jpg", 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/LSTPopView/Images.xcassets/抖音个人信息.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "filename" : "抖音个人信息.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/LSTPopView/Images.xcassets/left_view.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "filename" : "left_view.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/LSTPopView/LSTPopView/常用示例demo/列表类型展示/CollectionView/LSTPopViewListCell.m: -------------------------------------------------------------------------------- 1 | // 2 | // LSTPopViewListCell.m 3 | // LSTPopView_Example 4 | // 5 | // Created by LoSenTrad on 2020/7/10. 6 | // Copyright © 2020 490790096@qq.com. All rights reserved. 7 | // 8 | 9 | #import "LSTPopViewListCell.h" 10 | 11 | @implementation LSTPopViewListCell 12 | 13 | - (void)awakeFromNib { 14 | [super awakeFromNib]; 15 | // Initialization code 16 | } 17 | 18 | @end 19 | -------------------------------------------------------------------------------- /Example/LSTPopView/LSTPopView/窗口优先级/LSTPriorityView.h: -------------------------------------------------------------------------------- 1 | // 2 | // LSTPriorityView.h 3 | // LSTPopView_Example 4 | // 5 | // Created by LoSenTrad on 2020/5/22. 6 | // Copyright © 2020 490790096@qq.com. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | NS_ASSUME_NONNULL_BEGIN 12 | 13 | @interface LSTPriorityView : UIView 14 | 15 | /** 标题 */ 16 | @property (nonatomic,strong) UILabel *titleLab; 17 | 18 | @end 19 | 20 | NS_ASSUME_NONNULL_END 21 | -------------------------------------------------------------------------------- /Example/LSTPopView/Images.xcassets/app启动示例/indexAd.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "filename" : "indexAd.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/LSTPopView/Images.xcassets/美女1.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "filename" : "211594347669_.pic_hd.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/LSTPopView/Images.xcassets/美女2.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "filename" : "221594347766_.pic_hd.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/LSTPopView/Images.xcassets/美女3.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "filename" : "231594347794_.pic_hd.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/LSTPopView/Images.xcassets/app启动示例/appUpate.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "filename" : "16074904068692.jpg", 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/LSTPopView/Images.xcassets/app启动示例/flashAd.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "filename" : "16074908758299.jpg", 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/LSTPopView/LSTPopView/窗口编队测试/LSTPopViewGroupTestView.h: -------------------------------------------------------------------------------- 1 | // 2 | // LSTPopViewGroupTestView.h 3 | // LSTPopView_Example 4 | // 5 | // Created by LoSenTrad on 2020/5/3. 6 | // Copyright © 2020 490790096@qq.com. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | NS_ASSUME_NONNULL_BEGIN 12 | 13 | @interface LSTPopViewGroupTestView : UIView 14 | @property (weak, nonatomic) IBOutlet UILabel *titleLab; 15 | 16 | @end 17 | 18 | NS_ASSUME_NONNULL_END 19 | -------------------------------------------------------------------------------- /Example/LSTPopView/Images.xcassets/app启动示例/appPrivacy.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "filename" : "16074912157167.jpg", 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/LSTPopView/LSTPopView/常用示例demo/加载指示器/LSTPopViewloadingView.h: -------------------------------------------------------------------------------- 1 | // 2 | // LSTPopViewloadingView.h 3 | // LSTPopView_Example 4 | // 5 | // Created by LoSenTrad on 2020/4/24. 6 | // Copyright © 2020 490790096@qq.com. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | NS_ASSUME_NONNULL_BEGIN 12 | 13 | @interface LSTPopViewloadingView : UIView 14 | @property (weak, nonatomic) IBOutlet UILabel *titleLab; 15 | 16 | @end 17 | 18 | NS_ASSUME_NONNULL_END 19 | -------------------------------------------------------------------------------- /Example/LSTPopView/Images.xcassets/app启动示例/appPush.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "filename" : "iShot2020-12-09下午02.04.31.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/LSTPopView/LSTPopView/app启动多窗口实例/app更新/LSTAppUpdateView.m: -------------------------------------------------------------------------------- 1 | // 2 | // LSTAppUpdateView.m 3 | // LSTPopView_Example 4 | // 5 | // Created by LoSenTrad on 2020/12/9. 6 | // Copyright © 2020 490790096@qq.com. All rights reserved. 7 | // 8 | 9 | #import "LSTAppUpdateView.h" 10 | 11 | @implementation LSTAppUpdateView 12 | 13 | - (void)awakeFromNib { 14 | [super awakeFromNib]; 15 | self.layer.cornerRadius = 10; 16 | self.layer.masksToBounds = YES; 17 | 18 | } 19 | @end 20 | -------------------------------------------------------------------------------- /Example/LSTPopView/LSTPopView/app启动多窗口实例/用户隐私/LSTAppPrivacyView.m: -------------------------------------------------------------------------------- 1 | // 2 | // LSTAppPrivacyView.m 3 | // LSTPopView_Example 4 | // 5 | // Created by LoSenTrad on 2020/12/9. 6 | // Copyright © 2020 490790096@qq.com. All rights reserved. 7 | // 8 | 9 | #import "LSTAppPrivacyView.h" 10 | 11 | @implementation LSTAppPrivacyView 12 | 13 | - (void)awakeFromNib { 14 | [super awakeFromNib]; 15 | self.layer.cornerRadius = 10; 16 | self.layer.masksToBounds = YES; 17 | } 18 | 19 | @end 20 | -------------------------------------------------------------------------------- /Example/LSTPopView/LSTPopView/常用示例demo/中间输入框/LSTPopViewCenterInputView.h: -------------------------------------------------------------------------------- 1 | // 2 | // LSTPopViewCenterInputView.h 3 | // LSTPopView_Example 4 | // 5 | // Created by LoSenTrad on 2020/4/24. 6 | // Copyright © 2020 490790096@qq.com. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | NS_ASSUME_NONNULL_BEGIN 12 | 13 | @interface LSTPopViewCenterInputView : UIView 14 | @property (weak, nonatomic) IBOutlet UITextField *textTF; 15 | 16 | @end 17 | 18 | NS_ASSUME_NONNULL_END 19 | -------------------------------------------------------------------------------- /Example/LSTPopView/LSTPopView/常用示例demo/列表类型展示/CollectionView/LSTPopViewListBuyView.h: -------------------------------------------------------------------------------- 1 | // 2 | // LSTPopViewListBuyView.h 3 | // LSTPopView_Example 4 | // 5 | // Created by LoSenTrad on 2020/12/20. 6 | // Copyright © 2020 490790096@qq.com. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | NS_ASSUME_NONNULL_BEGIN 12 | 13 | @interface LSTPopViewListBuyView : UIView 14 | @property (weak, nonatomic) IBOutlet UILabel *titleLab; 15 | 16 | @end 17 | 18 | NS_ASSUME_NONNULL_END 19 | -------------------------------------------------------------------------------- /Example/LSTPopView/LSTPopView/常用示例demo/底部输入框/LSTPopViewBottomInputView.h: -------------------------------------------------------------------------------- 1 | // 2 | // LSTPopViewBottomInputView.h 3 | // LSTPopView_Example 4 | // 5 | // Created by LoSenTrad on 2020/4/24. 6 | // Copyright © 2020 490790096@qq.com. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | NS_ASSUME_NONNULL_BEGIN 12 | 13 | @interface LSTPopViewBottomInputView : UIView 14 | @property (weak, nonatomic) IBOutlet UITextField *textTF; 15 | 16 | @end 17 | 18 | NS_ASSUME_NONNULL_END 19 | -------------------------------------------------------------------------------- /Example/LSTPopView/Images.xcassets/nav_back.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x" 6 | }, 7 | { 8 | "filename" : "nav_back@2x.png", 9 | "idiom" : "universal", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "filename" : "nav_back@3x.png", 14 | "idiom" : "universal", 15 | "scale" : "3x" 16 | } 17 | ], 18 | "info" : { 19 | "author" : "xcode", 20 | "version" : 1 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /Example/LSTPopView/Images.xcassets/nav_down.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x" 6 | }, 7 | { 8 | "filename" : "nav_down@2x.png", 9 | "idiom" : "universal", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "filename" : "nav_down@3x.png", 14 | "idiom" : "universal", 15 | "scale" : "3x" 16 | } 17 | ], 18 | "info" : { 19 | "author" : "xcode", 20 | "version" : 1 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /Example/LSTPopView/Images.xcassets/nav_right.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x" 6 | }, 7 | { 8 | "filename" : "nav_right@2x.png", 9 | "idiom" : "universal", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "filename" : "nav_right@3x.png", 14 | "idiom" : "universal", 15 | "scale" : "3x" 16 | } 17 | ], 18 | "info" : { 19 | "author" : "xcode", 20 | "version" : 1 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /Example/LSTPopView/LSTPopView/定时器调试/LSTPopViewTimerView.h: -------------------------------------------------------------------------------- 1 | // 2 | // LSTPopViewTimerView.h 3 | // LSTPopView_Example 4 | // 5 | // Created by LoSenTrad on 2020/7/10. 6 | // Copyright © 2020 490790096@qq.com. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | NS_ASSUME_NONNULL_BEGIN 12 | 13 | @interface LSTPopViewTimerView : UIView 14 | @property (weak, nonatomic) IBOutlet UILabel *timeLab; 15 | @property (weak, nonatomic) IBOutlet UIImageView *imgView; 16 | 17 | @end 18 | 19 | NS_ASSUME_NONNULL_END 20 | -------------------------------------------------------------------------------- /Example/LSTPopView/LSTPopView/生命周期(多代理)/LSTLifeCycleView.h: -------------------------------------------------------------------------------- 1 | // 2 | // LSTLifeCycleView.h 3 | // LSTPopView_Example 4 | // 5 | // Created by LoSenTrad on 2020/6/6. 6 | // Copyright © 2020 490790096@qq.com. All rights reserved. 7 | // 8 | 9 | #import 10 | #import 11 | 12 | NS_ASSUME_NONNULL_BEGIN 13 | 14 | @interface LSTLifeCycleView : UIView 15 | 16 | 17 | /** 倒计时lab */ 18 | @property (nonatomic,strong) UILabel *timeLab; 19 | 20 | @end 21 | 22 | NS_ASSUME_NONNULL_END 23 | -------------------------------------------------------------------------------- /Example/LSTPopView/LSTPopView/多窗口测试/LSTMutiPopView.h: -------------------------------------------------------------------------------- 1 | // 2 | // LSTMutiPopView.h 3 | // LSTPopView_Example 4 | // 5 | // Created by LoSenTrad on 2020/3/31. 6 | // Copyright © 2020 490790096@qq.com. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | typedef void(^LSTMutiPopViewBlock)(void); 12 | 13 | NS_ASSUME_NONNULL_BEGIN 14 | 15 | 16 | @interface LSTMutiPopView : UIView 17 | 18 | /** <#...#> */ 19 | @property (nonatomic, copy) LSTMutiPopViewBlock closeBlock; 20 | 21 | @end 22 | 23 | NS_ASSUME_NONNULL_END 24 | -------------------------------------------------------------------------------- /Example/LSTPopView/LSTPopView/app启动多窗口实例/首页广告/LSTIndexAdView.m: -------------------------------------------------------------------------------- 1 | // 2 | // LSTIndexAdView.m 3 | // LSTPopView_Example 4 | // 5 | // Created by LoSenTrad on 2020/12/9. 6 | // Copyright © 2020 490790096@qq.com. All rights reserved. 7 | // 8 | 9 | #import "LSTIndexAdView.h" 10 | 11 | @implementation LSTIndexAdView 12 | 13 | /* 14 | // Only override drawRect: if you perform custom drawing. 15 | // An empty implementation adversely affects performance during animation. 16 | - (void)drawRect:(CGRect)rect { 17 | // Drawing code 18 | } 19 | */ 20 | 21 | @end 22 | -------------------------------------------------------------------------------- /Example/LSTPopView/LSTPopView/纯代码自定义view/LSTPopViewCodeView.h: -------------------------------------------------------------------------------- 1 | // 2 | // LSTPopViewCodeView.h 3 | // LSTAlertView_Example 4 | // 5 | // Created by LoSenTrad on 2020/2/3. 6 | // Copyright © 2020 490790096@qq.com. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | 12 | typedef void(^LSTPopViewCodeViewBlock)(void); 13 | 14 | NS_ASSUME_NONNULL_BEGIN 15 | 16 | @interface LSTPopViewCodeView : UIView 17 | 18 | /** <#...#> */ 19 | @property (nonatomic, copy) LSTPopViewCodeViewBlock closeBlock; 20 | 21 | @end 22 | 23 | NS_ASSUME_NONNULL_END 24 | -------------------------------------------------------------------------------- /Example/LSTPopView/LSTPopView/规避键盘测试/LSTKeyboardXibView.h: -------------------------------------------------------------------------------- 1 | // 2 | // LSTKeyboardXibView.h 3 | // LSTPopView_Example 4 | // 5 | // Created by LoSenTrad on 2020/4/15. 6 | // Copyright © 2020 490790096@qq.com. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | 12 | typedef void(^LSTKeyboardXibViewBlock)(id sender); 13 | 14 | NS_ASSUME_NONNULL_BEGIN 15 | 16 | @interface LSTKeyboardXibView : UIView 17 | 18 | /** <#...#> */ 19 | @property (nonatomic, copy) LSTKeyboardXibViewBlock addBlock; 20 | 21 | @end 22 | 23 | NS_ASSUME_NONNULL_END 24 | -------------------------------------------------------------------------------- /Example/LSTPopView/LSTPopView/app启动多窗口实例/打开推送/LSTOpenPushView.m: -------------------------------------------------------------------------------- 1 | // 2 | // LSTOpenPushView.m 3 | // LSTPopView_Example 4 | // 5 | // Created by LoSenTrad on 2020/12/9. 6 | // Copyright © 2020 490790096@qq.com. All rights reserved. 7 | // 8 | 9 | #import "LSTOpenPushView.h" 10 | 11 | @implementation LSTOpenPushView 12 | 13 | /* 14 | // Only override drawRect: if you perform custom drawing. 15 | // An empty implementation adversely affects performance during animation. 16 | - (void)drawRect:(CGRect)rect { 17 | // Drawing code 18 | } 19 | */ 20 | 21 | @end 22 | -------------------------------------------------------------------------------- /Example/LSTPopView/LSTPopView/常用示例demo/QQ音乐顶部/LSTPopViewQQView.m: -------------------------------------------------------------------------------- 1 | // 2 | // LSTPopViewQQView.m 3 | // LSTPopView_Example 4 | // 5 | // Created by LoSenTrad on 2020/4/23. 6 | // Copyright © 2020 490790096@qq.com. All rights reserved. 7 | // 8 | 9 | #import "LSTPopViewQQView.h" 10 | 11 | @implementation LSTPopViewQQView 12 | 13 | /* 14 | // Only override drawRect: if you perform custom drawing. 15 | // An empty implementation adversely affects performance during animation. 16 | - (void)drawRect:(CGRect)rect { 17 | // Drawing code 18 | } 19 | */ 20 | 21 | @end 22 | -------------------------------------------------------------------------------- /Example/LSTPopView/LSTPopView/定时器调试/LSTPopViewTimerView.m: -------------------------------------------------------------------------------- 1 | // 2 | // LSTPopViewTimerView.m 3 | // LSTPopView_Example 4 | // 5 | // Created by LoSenTrad on 2020/7/10. 6 | // Copyright © 2020 490790096@qq.com. All rights reserved. 7 | // 8 | 9 | #import "LSTPopViewTimerView.h" 10 | 11 | @implementation LSTPopViewTimerView 12 | 13 | /* 14 | // Only override drawRect: if you perform custom drawing. 15 | // An empty implementation adversely affects performance during animation. 16 | - (void)drawRect:(CGRect)rect { 17 | // Drawing code 18 | } 19 | */ 20 | 21 | @end 22 | -------------------------------------------------------------------------------- /Example/LSTPopView/LSTPopView/常用示例demo/QQ顶部/LSTPopViewqqtopView.m: -------------------------------------------------------------------------------- 1 | // 2 | // LSTPopViewqqView.m 3 | // LSTPopView_Example 4 | // 5 | // Created by LoSenTrad on 2020/4/24. 6 | // Copyright © 2020 490790096@qq.com. All rights reserved. 7 | // 8 | 9 | #import "LSTPopViewqqtopView.h" 10 | 11 | @implementation LSTPopViewqqtopView 12 | 13 | /* 14 | // Only override drawRect: if you perform custom drawing. 15 | // An empty implementation adversely affects performance during animation. 16 | - (void)drawRect:(CGRect)rect { 17 | // Drawing code 18 | } 19 | */ 20 | 21 | @end 22 | -------------------------------------------------------------------------------- /Example/LSTPopView/LSTPopView/常用示例demo/抖音/LSTPopViewdoyinView.m: -------------------------------------------------------------------------------- 1 | // 2 | // LSTPopViewdoyinView.m 3 | // LSTPopView_Example 4 | // 5 | // Created by LoSenTrad on 2020/4/27. 6 | // Copyright © 2020 490790096@qq.com. All rights reserved. 7 | // 8 | 9 | #import "LSTPopViewdoyinView.h" 10 | 11 | @implementation LSTPopViewdoyinView 12 | 13 | /* 14 | // Only override drawRect: if you perform custom drawing. 15 | // An empty implementation adversely affects performance during animation. 16 | - (void)drawRect:(CGRect)rect { 17 | // Drawing code 18 | } 19 | */ 20 | 21 | @end 22 | -------------------------------------------------------------------------------- /Example/LSTPopView/LSTPopView/常用示例demo/列表类型展示/CollectionView/LSTPopViewListBuyView.m: -------------------------------------------------------------------------------- 1 | // 2 | // LSTPopViewListBuyView.m 3 | // LSTPopView_Example 4 | // 5 | // Created by LoSenTrad on 2020/12/20. 6 | // Copyright © 2020 490790096@qq.com. All rights reserved. 7 | // 8 | 9 | #import "LSTPopViewListBuyView.h" 10 | 11 | @implementation LSTPopViewListBuyView 12 | 13 | - (void)awakeFromNib { 14 | [super awakeFromNib]; 15 | 16 | 17 | self.titleLab.layer.cornerRadius = 40; 18 | self.titleLab.layer.masksToBounds = YES; 19 | 20 | 21 | } 22 | 23 | @end 24 | -------------------------------------------------------------------------------- /Example/LSTPopView/LSTPopView/常用示例demo/加载指示器/LSTPopViewloadingView.m: -------------------------------------------------------------------------------- 1 | // 2 | // LSTPopViewloadingView.m 3 | // LSTPopView_Example 4 | // 5 | // Created by LoSenTrad on 2020/4/24. 6 | // Copyright © 2020 490790096@qq.com. All rights reserved. 7 | // 8 | 9 | #import "LSTPopViewloadingView.h" 10 | 11 | @implementation LSTPopViewloadingView 12 | 13 | /* 14 | // Only override drawRect: if you perform custom drawing. 15 | // An empty implementation adversely affects performance during animation. 16 | - (void)drawRect:(CGRect)rect { 17 | // Drawing code 18 | } 19 | */ 20 | 21 | @end 22 | -------------------------------------------------------------------------------- /Example/LSTPopView/LSTPopView/常用示例demo/类微信1微博底部弹框/LSTPopViewWeChatView.m: -------------------------------------------------------------------------------- 1 | // 2 | // LSTPopViewWeChatView.m 3 | // LSTPopView_Example 4 | // 5 | // Created by LoSenTrad on 2020/4/24. 6 | // Copyright © 2020 490790096@qq.com. All rights reserved. 7 | // 8 | 9 | #import "LSTPopViewWeChatView.h" 10 | 11 | @implementation LSTPopViewWeChatView 12 | 13 | /* 14 | // Only override drawRect: if you perform custom drawing. 15 | // An empty implementation adversely affects performance during animation. 16 | - (void)drawRect:(CGRect)rect { 17 | // Drawing code 18 | } 19 | */ 20 | 21 | @end 22 | -------------------------------------------------------------------------------- /Example/LSTPopView/LSTPopView/窗口编队测试/LSTPopViewGroupTestView.m: -------------------------------------------------------------------------------- 1 | // 2 | // LSTPopViewGroupTestView.m 3 | // LSTPopView_Example 4 | // 5 | // Created by LoSenTrad on 2020/5/3. 6 | // Copyright © 2020 490790096@qq.com. All rights reserved. 7 | // 8 | 9 | #import "LSTPopViewGroupTestView.h" 10 | 11 | @implementation LSTPopViewGroupTestView 12 | 13 | /* 14 | // Only override drawRect: if you perform custom drawing. 15 | // An empty implementation adversely affects performance during animation. 16 | - (void)drawRect:(CGRect)rect { 17 | // Drawing code 18 | } 19 | */ 20 | 21 | @end 22 | -------------------------------------------------------------------------------- /.travis.yml: -------------------------------------------------------------------------------- 1 | # references: 2 | # * https://www.objc.io/issues/6-build-tools/travis-ci/ 3 | # * https://github.com/supermarin/xcpretty#usage 4 | 5 | osx_image: xcode7.3 6 | language: objective-c 7 | # cache: cocoapods 8 | # podfile: Example/Podfile 9 | # before_install: 10 | # - gem install cocoapods # Since Travis is not always on latest version 11 | # - pod install --project-directory=Example 12 | script: 13 | - set -o pipefail && xcodebuild test -enableCodeCoverage YES -workspace Example/LSTPopView.xcworkspace -scheme LSTPopView-Example -sdk iphonesimulator9.3 ONLY_ACTIVE_ARCH=NO | xcpretty 14 | - pod lib lint 15 | -------------------------------------------------------------------------------- /Example/LSTPopView/LSTPopView/app启动多窗口实例/LSTLaunchMutiPopViewVC.h: -------------------------------------------------------------------------------- 1 | // 2 | // LSTLaunchMutiPopViewVC.h 3 | // LSTPopView_Example 4 | // 5 | // Created by LoSenTrad on 2020/12/9. 6 | // Copyright © 2020 490790096@qq.com. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | NS_ASSUME_NONNULL_BEGIN 12 | 13 | @interface LSTLaunchMutiPopViewVC : UIViewController 14 | 15 | + (void)appFlashAdPopView; 16 | 17 | + (void)appUpdatePopView; 18 | 19 | + (void)appPrivacyPopView; 20 | 21 | + (void)appIndexAdPopView; 22 | 23 | + (void)appPushPopView; 24 | 25 | @end 26 | 27 | NS_ASSUME_NONNULL_END 28 | -------------------------------------------------------------------------------- /Example/LSTPopView/LSTPopView/XIB自定义View/LSTPopViewXibView.h: -------------------------------------------------------------------------------- 1 | // 2 | // LSTPopViewXibView.h 3 | // LSTAlertView_Example 4 | // 5 | // Created by LoSenTrad on 2020/2/3. 6 | // Copyright © 2020 490790096@qq.com. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | 12 | 13 | typedef void(^LSTPopViewXibViewBlock)(void); 14 | 15 | NS_ASSUME_NONNULL_BEGIN 16 | 17 | @interface LSTPopViewXibView : UIView 18 | 19 | /** <#...#> */ 20 | @property (nonatomic, copy) LSTPopViewXibViewBlock clickBlock; 21 | @property (weak, nonatomic) IBOutlet UIButton *bgBtn; 22 | 23 | @end 24 | 25 | NS_ASSUME_NONNULL_END 26 | -------------------------------------------------------------------------------- /Example/LSTPopView/LSTPopView/常用示例demo/中间输入框/LSTPopViewCenterInputView.m: -------------------------------------------------------------------------------- 1 | // 2 | // LSTPopViewCenterInputView.m 3 | // LSTPopView_Example 4 | // 5 | // Created by LoSenTrad on 2020/4/24. 6 | // Copyright © 2020 490790096@qq.com. All rights reserved. 7 | // 8 | 9 | #import "LSTPopViewCenterInputView.h" 10 | 11 | @interface LSTPopViewCenterInputView () 12 | 13 | 14 | 15 | @end 16 | 17 | @implementation LSTPopViewCenterInputView 18 | 19 | - (void)awakeFromNib { 20 | [super awakeFromNib]; 21 | 22 | self.layer.cornerRadius = 5; 23 | self.layer.masksToBounds = YES; 24 | 25 | } 26 | 27 | @end 28 | -------------------------------------------------------------------------------- /Example/LSTPopView/LSTPopView/常用示例demo/列表类型展示/CollectionView/LSTPopViewListCell.h: -------------------------------------------------------------------------------- 1 | // 2 | // LSTPopViewListCell.h 3 | // LSTPopView_Example 4 | // 5 | // Created by LoSenTrad on 2020/7/10. 6 | // Copyright © 2020 490790096@qq.com. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | NS_ASSUME_NONNULL_BEGIN 12 | 13 | @interface LSTPopViewListCell : UICollectionViewCell 14 | @property (weak, nonatomic) IBOutlet UILabel *titleLab; 15 | @property (weak, nonatomic) IBOutlet UIImageView *imgView; 16 | @property (weak, nonatomic) IBOutlet UIView *bottomView; 17 | 18 | @end 19 | 20 | NS_ASSUME_NONNULL_END 21 | -------------------------------------------------------------------------------- /Example/LSTPopView/LSTPopView/常用示例demo/加载指示器/LSTPopViewLoadingCell.m: -------------------------------------------------------------------------------- 1 | // 2 | // LSTPopViewLoadingCell.m 3 | // LSTPopView_Example 4 | // 5 | // Created by LoSenTrad on 2020/4/24. 6 | // Copyright © 2020 490790096@qq.com. All rights reserved. 7 | // 8 | 9 | #import "LSTPopViewLoadingCell.h" 10 | 11 | @implementation LSTPopViewLoadingCell 12 | 13 | - (void)awakeFromNib { 14 | [super awakeFromNib]; 15 | // Initialization code 16 | } 17 | 18 | - (void)setSelected:(BOOL)selected animated:(BOOL)animated { 19 | [super setSelected:selected animated:animated]; 20 | 21 | // Configure the view for the selected state 22 | } 23 | 24 | @end 25 | -------------------------------------------------------------------------------- /Example/LSTPopView/LSTPopView/常用示例demo/列表类型展示/TableView/LSTPopViewTVCellView.m: -------------------------------------------------------------------------------- 1 | // 2 | // LSTPopViewTVCellView.m 3 | // LSTPopView_Example 4 | // 5 | // Created by LoSenTrad on 2020/12/16. 6 | // Copyright © 2020 490790096@qq.com. All rights reserved. 7 | // 8 | 9 | #import "LSTPopViewTVCellView.h" 10 | 11 | @implementation LSTPopViewTVCellView 12 | 13 | - (void)awakeFromNib { 14 | [super awakeFromNib]; 15 | // Initialization code 16 | } 17 | 18 | - (void)setSelected:(BOOL)selected animated:(BOOL)animated { 19 | [super setSelected:selected animated:animated]; 20 | 21 | // Configure the view for the selected state 22 | } 23 | 24 | @end 25 | -------------------------------------------------------------------------------- /Example/LSTPopView/LSTPopView/常用示例demo/列表类型展示/TableView/LSTPopViewTVViewCell.h: -------------------------------------------------------------------------------- 1 | // 2 | // LSTPopViewTVViewCell.h 3 | // LSTPopView_Example 4 | // 5 | // Created by LoSenTrad on 2020/12/16. 6 | // Copyright © 2020 490790096@qq.com. All rights reserved. 7 | // 8 | 9 | #import 10 | #import 11 | 12 | 13 | NS_ASSUME_NONNULL_BEGIN 14 | 15 | @interface LSTPopViewTVViewCell : UITableViewCell 16 | @property (weak, nonatomic) IBOutlet UILabel *titleLab; 17 | @property (weak, nonatomic) IBOutlet UILabel *descLab; 18 | @property (weak, nonatomic) IBOutlet UIButton *moreBtn; 19 | 20 | 21 | 22 | @end 23 | 24 | NS_ASSUME_NONNULL_END 25 | -------------------------------------------------------------------------------- /Example/LSTPopView/LSTPopView/常用示例demo/左侧边栏/LSTPopViewrLSidebarView.m: -------------------------------------------------------------------------------- 1 | // 2 | // LSTPopViewrLSidebarView.m 3 | // LSTPopView_Example 4 | // 5 | // Created by LoSenTrad on 2020/4/24. 6 | // Copyright © 2020 490790096@qq.com. All rights reserved. 7 | // 8 | 9 | #import "LSTPopViewrLSidebarView.h" 10 | 11 | @interface LSTPopViewrLSidebarView () 12 | 13 | @property (weak, nonatomic) IBOutlet UIImageView *imgView; 14 | 15 | @end 16 | 17 | @implementation LSTPopViewrLSidebarView 18 | 19 | - (void)awakeFromNib { 20 | [super awakeFromNib]; 21 | 22 | self.imgView.layer.cornerRadius = 40; 23 | self.imgView.layer.masksToBounds = YES; 24 | 25 | } 26 | 27 | @end 28 | -------------------------------------------------------------------------------- /Example/LSTPopView/LSTPopView/app启动多窗口实例/闪屏广告/LSTAppFlashAdView.h: -------------------------------------------------------------------------------- 1 | // 2 | // LSTAppFlashAdView.h 3 | // LSTPopView_Example 4 | // 5 | // Created by LoSenTrad on 2020/12/9. 6 | // Copyright © 2020 490790096@qq.com. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | typedef void(^LSTAppFlashAdViewBlock)(id sender); 12 | 13 | NS_ASSUME_NONNULL_BEGIN 14 | 15 | @interface LSTAppFlashAdView : UIView 16 | @property (weak, nonatomic) IBOutlet UIButton *timeBtn; 17 | @property (weak, nonatomic) IBOutlet NSLayoutConstraint *topH; 18 | 19 | /** <#...#> */ 20 | @property (nonatomic, copy) LSTAppFlashAdViewBlock skipBlock; 21 | 22 | @end 23 | 24 | NS_ASSUME_NONNULL_END 25 | -------------------------------------------------------------------------------- /Example/LSTPopView/LSTPopView/常用示例demo/底部输入框/LSTPopViewBottomInputView.m: -------------------------------------------------------------------------------- 1 | // 2 | // LSTPopViewBottomInputView.m 3 | // LSTPopView_Example 4 | // 5 | // Created by LoSenTrad on 2020/4/24. 6 | // Copyright © 2020 490790096@qq.com. All rights reserved. 7 | // 8 | 9 | #import "LSTPopViewBottomInputView.h" 10 | #import 11 | 12 | @implementation LSTPopViewBottomInputView 13 | 14 | - (void)awakeFromNib { 15 | [super awakeFromNib]; 16 | 17 | 18 | 19 | } 20 | - (IBAction)dadad:(UIButton *)sender { 21 | 22 | } 23 | 24 | 25 | - (IBAction)sureBtnAction:(UIButton *)sender { 26 | self.pv_Height = self.pv_Height+10; 27 | } 28 | 29 | 30 | @end 31 | -------------------------------------------------------------------------------- /Example/LSTPopView/LSTPopView/规避键盘测试/LSTKeyboardXibView.m: -------------------------------------------------------------------------------- 1 | // 2 | // LSTKeyboardXibView.m 3 | // LSTPopView_Example 4 | // 5 | // Created by LoSenTrad on 2020/4/15. 6 | // Copyright © 2020 490790096@qq.com. All rights reserved. 7 | // 8 | 9 | #import "LSTKeyboardXibView.h" 10 | 11 | @implementation LSTKeyboardXibView 12 | 13 | /* 14 | // Only override drawRect: if you perform custom drawing. 15 | // An empty implementation adversely affects performance during animation. 16 | - (void)drawRect:(CGRect)rect { 17 | // Drawing code 18 | } 19 | */ 20 | 21 | 22 | - (IBAction)addBtnAction:(UIButton *)sender { 23 | if (self.addBlock) { 24 | self.addBlock(sender); 25 | } 26 | 27 | } 28 | 29 | 30 | @end 31 | -------------------------------------------------------------------------------- /Example/Tests/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 | CFBundlePackageType 14 | BNDL 15 | CFBundleShortVersionString 16 | 1.0 17 | CFBundleSignature 18 | ???? 19 | CFBundleVersion 20 | 1 21 | 22 | 23 | -------------------------------------------------------------------------------- /Example/Tests/Tests.m: -------------------------------------------------------------------------------- 1 | // 2 | // LSTPopViewTests.m 3 | // LSTPopViewTests 4 | // 5 | // Created by 490790096@qq.com on 03/06/2020. 6 | // Copyright (c) 2020 490790096@qq.com. All rights reserved. 7 | // 8 | 9 | @import XCTest; 10 | 11 | @interface Tests : XCTestCase 12 | 13 | @end 14 | 15 | @implementation Tests 16 | 17 | - (void)setUp 18 | { 19 | [super setUp]; 20 | // Put setup code here. This method is called before the invocation of each test method in the class. 21 | } 22 | 23 | - (void)tearDown 24 | { 25 | // Put teardown code here. This method is called after the invocation of each test method in the class. 26 | [super tearDown]; 27 | } 28 | 29 | - (void)testExample 30 | { 31 | XCTFail(@"No implementation for \"%s\"", __PRETTY_FUNCTION__); 32 | } 33 | 34 | @end 35 | 36 | -------------------------------------------------------------------------------- /Example/LSTPopView/Main/LSTBaseVC.m: -------------------------------------------------------------------------------- 1 | // 2 | // LSTBaseVC.m 3 | // LSTAlertView_Example 4 | // 5 | // Created by LoSenTrad on 2020/1/17. 6 | // Copyright © 2020 490790096@qq.com. All rights reserved. 7 | // 8 | 9 | #import "LSTBaseVC.h" 10 | 11 | @interface LSTBaseVC () 12 | 13 | @end 14 | 15 | @implementation LSTBaseVC 16 | 17 | - (void)viewDidLoad { 18 | [super viewDidLoad]; 19 | self.view.backgroundColor = UIColor.whiteColor; 20 | } 21 | 22 | /* 23 | #pragma mark - Navigation 24 | 25 | // In a storyboard-based application, you will often want to do a little preparation before navigation 26 | - (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender { 27 | // Get the new view controller using [segue destinationViewController]. 28 | // Pass the selected object to the new view controller. 29 | } 30 | */ 31 | 32 | @end 33 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # OS X 2 | .DS_Store 3 | 4 | # Xcode 5 | build/ 6 | *.pbxuser 7 | !default.pbxuser 8 | *.mode1v3 9 | !default.mode1v3 10 | *.mode2v3 11 | !default.mode2v3 12 | *.perspectivev3 13 | !default.perspectivev3 14 | xcuserdata/ 15 | *.xccheckout 16 | profile 17 | *.moved-aside 18 | DerivedData 19 | *.hmap 20 | *.ipa 21 | 22 | # Bundler 23 | .bundle 24 | 25 | # Add this line if you want to avoid checking in source code from Carthage dependencies. 26 | # Carthage/Checkouts 27 | 28 | Carthage/Build 29 | 30 | # We recommend against adding the Pods directory to your .gitignore. However 31 | # you should judge for yourself, the pros and cons are mentioned at: 32 | # https://guides.cocoapods.org/using/using-cocoapods.html#should-i-ignore-the-pods-directory-in-source-control 33 | # 34 | # Note: if you ignore the Pods directory, make sure to uncomment 35 | # `pod install` in .travis.yml 36 | # 37 | # Pods/ 38 | Example/Pods 39 | -------------------------------------------------------------------------------- /Example/LSTPopView/LSTPopView/LSTModel.h: -------------------------------------------------------------------------------- 1 | // 2 | // LSTModel.h 3 | // LSTPopView_Example 4 | // 5 | // Created by LoSenTrad on 2020/5/14. 6 | // Copyright © 2020 490790096@qq.com. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | 12 | typedef void(^LSTModelBlock)(void); 13 | 14 | NS_ASSUME_NONNULL_BEGIN 15 | 16 | @interface LSTModel : NSObject 17 | 18 | @property (nonatomic, assign) NSTimeInterval timeInterval; 19 | /** 定时器执行block */ 20 | @property (nonatomic, copy) LSTModelBlock handleBlock; 21 | /** 每次计时单位增量 */ 22 | @property (nonatomic, assign) NSTimeInterval unit; 23 | /** 是否递增 YES:递增 NO:递减 */ 24 | @property (nonatomic, assign) BOOL increase; 25 | /** 是否本地持久化保存定时数据 */ 26 | @property (nonatomic,assign) BOOL isDisk; 27 | /** 是否暂停 */ 28 | @property (nonatomic,assign) BOOL isPause; 29 | /** 标识 */ 30 | @property (nonatomic, copy) NSString *identifier; 31 | 32 | @end 33 | 34 | NS_ASSUME_NONNULL_END 35 | -------------------------------------------------------------------------------- /Example/LSTPopView/LSTPopView/LSTTestView.m: -------------------------------------------------------------------------------- 1 | // 2 | // LSTTestView.m 3 | // LSTPopView_Example 4 | // 5 | // Created by LoSenTrad on 2020/11/19. 6 | // Copyright © 2020 490790096@qq.com. All rights reserved. 7 | // 8 | 9 | #import "LSTTestView.h" 10 | 11 | @implementation LSTTestView 12 | #pragma mark - ***** 初始化 ***** 13 | 14 | - (instancetype)initWithFrame:(CGRect)frame { 15 | if (self = [super initWithFrame:frame]) { 16 | [self initSubViews]; 17 | } 18 | return self; 19 | } 20 | 21 | - (void)dealloc { 22 | 23 | } 24 | 25 | #pragma mark - ***** setter 设置器/数据处理 ***** 26 | 27 | 28 | #pragma mark - ***** setupUI 界面布局 ***** 29 | 30 | - (void)initSubViews { 31 | 32 | 33 | } 34 | 35 | - (void)layoutSubviews { 36 | [super layoutSubviews]; 37 | 38 | 39 | } 40 | 41 | #pragma mark - ***** other 其他 ***** 42 | 43 | 44 | #pragma mark - ***** Lazy Loading 懒加载 ***** 45 | 46 | 47 | @end 48 | -------------------------------------------------------------------------------- /Example/Podfile.lock: -------------------------------------------------------------------------------- 1 | PODS: 2 | - Bugly (2.5.71) 3 | - LSTCategory (0.2.04281546): 4 | - LSTCategory/Code (= 0.2.04281546) 5 | - LSTCategory/Code (0.2.04281546) 6 | - LSTPopView (0.3.10): 7 | - LSTPopView/Code (= 0.3.10) 8 | - LSTTimer 9 | - LSTPopView/Code (0.3.10): 10 | - LSTTimer 11 | - LSTTimer (0.1.08251125) 12 | - Masonry (1.1.0) 13 | 14 | DEPENDENCIES: 15 | - Bugly 16 | - LSTCategory 17 | - LSTPopView (from `../`) 18 | - Masonry 19 | 20 | SPEC REPOS: 21 | trunk: 22 | - Bugly 23 | - LSTCategory 24 | - LSTTimer 25 | - Masonry 26 | 27 | EXTERNAL SOURCES: 28 | LSTPopView: 29 | :path: "../" 30 | 31 | SPEC CHECKSUMS: 32 | Bugly: fd066c75c4a0eca1440f9b6a84bd37d51bfc85ac 33 | LSTCategory: f70d240021080d1c4ab555b6129e74f5b0aa4ccb 34 | LSTPopView: 9379f00f6ce7d1fc620b50ab00ed3ef97b2d4d52 35 | LSTTimer: 6c4b5d75a71ce9b09961cfcc5e957d224383f92b 36 | Masonry: 678fab65091a9290e40e2832a55e7ab731aad201 37 | 38 | PODFILE CHECKSUM: 8c990f836be8391a83e29993635d5df7ad625029 39 | 40 | COCOAPODS: 1.10.1 41 | -------------------------------------------------------------------------------- /Example/LSTPopView/LSTPopView/XIB自定义View/LSTPopViewXibView.m: -------------------------------------------------------------------------------- 1 | // 2 | // LSTPopViewXibView.m 3 | // LSTAlertView_Example 4 | // 5 | // Created by LoSenTrad on 2020/2/3. 6 | // Copyright © 2020 490790096@qq.com. All rights reserved. 7 | // 8 | 9 | #import "LSTPopViewXibView.h" 10 | 11 | 12 | @interface LSTPopViewXibView () 13 | 14 | @property (weak, nonatomic) IBOutlet UIView *myView; 15 | 16 | @end 17 | 18 | @implementation LSTPopViewXibView 19 | 20 | 21 | 22 | - (void)awakeFromNib { 23 | [super awakeFromNib]; 24 | 25 | self.bgBtn.adjustsImageWhenHighlighted = NO; 26 | self.bgBtn.adjustsImageWhenDisabled = NO; 27 | 28 | 29 | UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(popViewBgViewTap)]; 30 | [self.myView addGestureRecognizer:tap]; 31 | 32 | } 33 | 34 | - (void)popViewBgViewTap { 35 | 36 | } 37 | 38 | - (IBAction)clickAction:(UIButton *)sender { 39 | 40 | if (self.clickBlock) { 41 | self.clickBlock(); 42 | } 43 | 44 | } 45 | 46 | - (IBAction)btnAction:(UIButton *)sender { 47 | 48 | } 49 | 50 | @end 51 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | Copyright (c) 2020 490790096@qq.com 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 | -------------------------------------------------------------------------------- /LSTPopView.podspec: -------------------------------------------------------------------------------- 1 | # 2 | # Be sure to run `pod lib lint LSTPopView.podspec' to ensure this is a 3 | # valid spec before submitting. 4 | # 5 | # Any lines starting with a # are optional, but their use is encouraged 6 | # To learn more about a Podspec see https://guides.cocoapods.org/syntax/podspec.html 7 | # 8 | 9 | Pod::Spec.new do |s| 10 | s.name = 'LSTPopView' 11 | s.version = '0.3.10' 12 | s.summary = 'LSTPopView是一个iOS万能弹窗组件' 13 | s.description = 'LSTPopView 万能弹窗,功能强大,易于拓展,性能优化和内存控制让其运行更加的流畅和稳健, LSTPopView的出现,可以让我们更专注弹窗页面的布局. 省心省力 ! 提高开发效率 !' 14 | s.homepage = 'https://github.com/LoSenTrad/LSTPopView' 15 | s.license = { :type => 'MIT', :file => 'LICENSE' } 16 | s.author = { '490790096@qq.com' => 'LoSenTrad@163.com' } 17 | s.source = { :git => 'https://github.com/LoSenTrad/LSTPopView.git', :tag => s.version.to_s } 18 | s.ios.deployment_target = '8.0' 19 | 20 | s.default_subspec = 'Code' 21 | s.subspec 'Code' do |code| 22 | code.source_files = 'LSTPopView/Classes/Code/**/*' 23 | code.frameworks = 'UIKit' 24 | end 25 | 26 | 27 | s.dependency 'LSTTimer' 28 | 29 | 30 | 31 | end 32 | -------------------------------------------------------------------------------- /Example/LSTPopView/LSTPopView/常用属性调试/LSTPopViewTestView.h: -------------------------------------------------------------------------------- 1 | // 2 | // LSTPopViewTestView.h 3 | // LSTAlertView_Example 4 | // 5 | // Created by LoSenTrad on 2020/3/3. 6 | // Copyright © 2020 490790096@qq.com. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | typedef void(^stepperBlock)(float value); 12 | typedef void(^LSTPopViewTestViewBlock)(id value); 13 | 14 | NS_ASSUME_NONNULL_BEGIN 15 | 16 | @interface LSTPopViewTestView : UIView 17 | @property (weak, nonatomic) IBOutlet UIStepper *xStepper; 18 | @property (weak, nonatomic) IBOutlet UIStepper *heightStepper; 19 | @property (weak, nonatomic) IBOutlet UIStepper *yStepper; 20 | @property (weak, nonatomic) IBOutlet UILabel *xLab; 21 | @property (weak, nonatomic) IBOutlet UILabel *yLab; 22 | /** <#...#> */ 23 | @property (nonatomic, copy) stepperBlock xStepperBlock; 24 | /** <#...#> */ 25 | @property (nonatomic, copy) stepperBlock yStepperBlock; 26 | /** <#...#> */ 27 | @property (nonatomic, copy) LSTPopViewTestViewBlock closeBlock; 28 | /** <#...#> */ 29 | @property (nonatomic, copy) LSTPopViewTestViewBlock pushBlock; 30 | @property (weak, nonatomic) IBOutlet UILabel *timeLab; 31 | 32 | 33 | @end 34 | 35 | NS_ASSUME_NONNULL_END 36 | -------------------------------------------------------------------------------- /Example/LSTPopView/LSTPopView/常用示例demo/列表类型展示/TableView/LSTPopViewTVViewCell.m: -------------------------------------------------------------------------------- 1 | // 2 | // LSTPopViewTVViewCell.m 3 | // LSTPopView_Example 4 | // 5 | // Created by LoSenTrad on 2020/12/16. 6 | // Copyright © 2020 490790096@qq.com. All rights reserved. 7 | // 8 | 9 | #import "LSTPopViewTVViewCell.h" 10 | #import 11 | #import 12 | #import "LSTPopViewTVCellView.h" 13 | #import 14 | #import 15 | 16 | 17 | 18 | @interface LSTPopViewTVViewCell () 19 | 20 | 21 | 22 | 23 | 24 | @end 25 | 26 | 27 | @implementation LSTPopViewTVViewCell 28 | 29 | - (void)awakeFromNib { 30 | [super awakeFromNib]; 31 | // Initialization code 32 | 33 | self.titleLab.layer.cornerRadius = 25; 34 | self.titleLab.layer.masksToBounds = YES; 35 | 36 | self.titleLab.textColor = UIColor.whiteColor; 37 | self.titleLab.backgroundColor = self.lst_RandomColor; 38 | self.selectionStyle = UITableViewCellSelectionStyleNone; 39 | 40 | 41 | } 42 | 43 | //随机色 44 | - (nonnull LSTColor *)lst_RandomColor { 45 | return [UIColor lst_ColorWith8BitRed:arc4random_uniform(255) green:arc4random_uniform(255) blue:arc4random_uniform(255) alpha:1]; 46 | } 47 | 48 | 49 | 50 | @end 51 | -------------------------------------------------------------------------------- /Example/LSTPopView/LSTPopView/app启动多窗口实例/闪屏广告/LSTAppFlashAdView.m: -------------------------------------------------------------------------------- 1 | // 2 | // LSTAppFlashAdView.m 3 | // LSTPopView_Example 4 | // 5 | // Created by LoSenTrad on 2020/12/9. 6 | // Copyright © 2020 490790096@qq.com. All rights reserved. 7 | // 8 | 9 | #import "LSTAppFlashAdView.h" 10 | #import 11 | #import 12 | 13 | @implementation LSTAppFlashAdView 14 | 15 | #pragma mark - ***** 初始化 ***** 16 | 17 | - (void)awakeFromNib { 18 | [super awakeFromNib]; 19 | [self initSubViews]; 20 | } 21 | 22 | #pragma mark - ***** setter 设置器/数据处理 ***** 23 | 24 | 25 | #pragma mark - ***** setupUI 界面布局 ***** 26 | 27 | - (void)initSubViews { 28 | 29 | self.timeBtn.backgroundColor = LSTHexColorWithAlpha(@"#000000", 0.5); 30 | 31 | self.timeBtn.layer.masksToBounds = YES; 32 | self.timeBtn.layer.cornerRadius = 15; 33 | 34 | if (lst_IsIphoneX_ALL()) { 35 | self.topH.constant = LSTStatusBarHeight()+10; 36 | } 37 | 38 | 39 | } 40 | 41 | - (void)layoutSubviews { 42 | [super layoutSubviews]; 43 | 44 | 45 | } 46 | - (IBAction)skipBtnAction:(UIButton *)sender { 47 | 48 | self.skipBlock? self.skipBlock(nil):nil; 49 | 50 | } 51 | 52 | #pragma mark - ***** other 其他 ***** 53 | 54 | 55 | #pragma mark - ***** Lazy Loading 懒加载 ***** 56 | 57 | 58 | @end 59 | -------------------------------------------------------------------------------- /LSTPopView/Classes/Code/UIView+LSTPV.h: -------------------------------------------------------------------------------- 1 | // 2 | // UIView+LSTPV.h 3 | // LSTPopView 4 | // 5 | // Created by LoSenTrad on 2020/11/30. 6 | // 7 | 8 | #import 9 | 10 | NS_ASSUME_NONNULL_BEGIN 11 | 12 | @interface UIView (LSTPV) 13 | 14 | /** 获取/设置view的x坐标 */ 15 | @property (nonatomic, assign) CGFloat pv_X; 16 | /** 获取/设置view的x坐标 */ 17 | @property (nonatomic, assign) CGFloat pv_Y; 18 | /** 获取/设置view的x坐标 */ 19 | @property (nonatomic, assign) CGFloat pv_Width; 20 | /** 获取/设置view的x坐标 */ 21 | @property (nonatomic, assign) CGFloat pv_Height; 22 | /** 获取/设置view的x坐标 */ 23 | @property (nonatomic, assign) CGFloat pv_CenterX; 24 | /** 获取/设置view的x坐标 */ 25 | @property (nonatomic, assign) CGFloat pv_CenterY; 26 | /** 获取/设置view的x坐标 */ 27 | @property (nonatomic, assign) CGFloat pv_Top; 28 | /** 获取/设置view的左边坐标 */ 29 | @property (nonatomic, assign) CGFloat pv_Left; 30 | /** 获取/设置view的底部坐标Y */ 31 | @property (nonatomic, assign) CGFloat pv_Bottom; 32 | /** 获取/设置view的右边坐标 */ 33 | @property (nonatomic, assign) CGFloat pv_Right; 34 | /** 获取/设置view的size */ 35 | @property (nonatomic, assign) CGSize pv_Size; 36 | 37 | 38 | /** 是否是苹果X系列(刘海屏系列) */ 39 | BOOL pv_IsIphoneX_ALL(void); 40 | /** 屏幕大小 */ 41 | CGSize pv_ScreenSize(void); 42 | /** 屏幕宽度 */ 43 | CGFloat pv_ScreenWidth(void); 44 | /** 屏幕高度 */ 45 | CGFloat pv_ScreenHeight(void); 46 | 47 | @end 48 | 49 | NS_ASSUME_NONNULL_END 50 | -------------------------------------------------------------------------------- /UPDATE_HISTORY.md: -------------------------------------------------------------------------------- 1 | ##LSTPopView 版本更新历史 2 | 3 | 2021.02.26 v0.3.10 4 | --- 5 | - 新增 弹窗位置LSTHemStyle 4种,详情请看api 6 | - 新增 向外提供获取自定view的api 7 | - 新增 圆角和方向设置rectCorners和cornerRadius 8 | - 新增 弹出时震动反馈isImpactFeedback 9 | - 新增 bugly的引入, 用于crash的收集和修复 10 | - 优化 内部内存管理机制 (感谢@Kchtin的意见) 11 | - 优化 代理池导致的内存泄露 (感谢@Kchtin的意见) 12 | - 优化 横竖屏自适应失效的问题 13 | - 优化 demo里面的一些示例 14 | 15 | 16 | 2020.12.22 v0.2.122201 17 | --- 18 | - 增加 调试日志LSTPopViewLogStyle 19 | - 增加 拖拽,横扫手势以及拖拽,横扫动画 20 | - 增加 全局属性使用的规范和注意事项 21 | - 增加 滑动手势point值Block回调 22 | - 修复 键盘高度变化,弹窗自适应优化 23 | - 修复 键盘弹出时,弹框size改变,自适应优化 24 | - 修复 swift项目或者与OC混编项目无法通过CocoaPods集成的问题 25 | - 优化 LSTPopStyle,LSTDismissStyle动画以及时间 26 | - 优化 偶尔发生的线程安全问题(多窗口引起,内存机制优化) 27 | - 优化 demo大部分的实例, 更加能提现LSTPopView设计的初衷 28 | - 私有化了 LSTPopViewManager(窗口管理者,内存管理), 目的是为了减少对窗口的持有和操作, 加强弹框的安全性, 不破坏内存机制. 不过还是向外提供了一些多窗口相关api 29 | - 移除了不必要的依赖库, 集成化更高了 30 | - 其他 见不得人的优化, 就不多说了 31 | 32 | 2020.08.11 v0.1.08111531 33 | --- 34 | - 完善了相关remove弹窗的相关api(感谢'骑猪找牛') 35 | - 完善demo 36 | - other 37 | 38 | 2020.07.23 v0.1.07231543 39 | --- 40 | - 优化弹窗计时器,更加精确 41 | - 完善demo 42 | - other 43 | 44 | 2020.07.10 v0.1.07101640 45 | --- 46 | - 修复自定view点击时间冲突问题 47 | - 优化相关api 48 | - 完善demo 49 | - other 50 | 51 | 2020.03.30 v0.1.03300123 52 | --- 53 | - 点击回馈动画默认关闭 54 | - 优化dismiss动画时间 55 | - other 56 | 57 | 2020.03.30 v0.1.03300123 58 | --- 59 | - 增加并优化popStyle动画 60 | - pop和dissmiss支持单独设置,详情请看demo 61 | - 增加点击反馈动画 62 | - 调整优化相关api和属性 63 | - 修复dismiss偶尔闪退 64 | 65 | 66 | -------------------------------------------------------------------------------- /Example/LSTPopView/LSTPopView/常用示例demo/uc分享/LSTPopViewUCView.m: -------------------------------------------------------------------------------- 1 | // 2 | // LSTPopViewTranspondView.m 3 | // LSTPopView_Example 4 | // 5 | // Created by LoSenTrad on 2020/4/24. 6 | // Copyright © 2020 490790096@qq.com. All rights reserved. 7 | // 8 | 9 | #import "LSTPopViewUCView.h" 10 | #import 11 | 12 | @interface LSTPopViewUCView () 13 | 14 | /** <#.....#> */ 15 | @property (nonatomic,strong) UIImageView *imgView; 16 | 17 | @end 18 | 19 | 20 | @implementation LSTPopViewUCView 21 | 22 | #pragma mark - ***** 初始化 ***** 23 | 24 | - (instancetype)initWithFrame:(CGRect)frame { 25 | if (self = [super initWithFrame:frame]) { 26 | [self initSubViews]; 27 | } 28 | return self; 29 | } 30 | 31 | #pragma mark - ***** setter 设置器/数据处理 ***** 32 | 33 | 34 | #pragma mark - ***** setupUI 界面布局 ***** 35 | 36 | - (void)initSubViews { 37 | 38 | [self addSubview:self.imgView]; 39 | 40 | } 41 | 42 | - (void)layoutSubviews { 43 | [super layoutSubviews]; 44 | 45 | [_imgView mas_makeConstraints:^(MASConstraintMaker *make) { 46 | make.top.left.bottom.right.equalTo(self); 47 | }]; 48 | 49 | } 50 | 51 | #pragma mark - ***** other 其他 ***** 52 | 53 | 54 | #pragma mark - ***** Lazy Loading 懒加载 ***** 55 | 56 | - (UIImageView *)imgView { 57 | if(_imgView) return _imgView; 58 | _imgView = [[UIImageView alloc] init]; 59 | _imgView.image = [UIImage imageNamed:@"uc"]; 60 | return _imgView; 61 | } 62 | 63 | 64 | @end 65 | -------------------------------------------------------------------------------- /Example/LSTPopView/LSTPopView/窗口优先级/LSTPriorityView.m: -------------------------------------------------------------------------------- 1 | // 2 | // LSTPriorityView.m 3 | // LSTPopView_Example 4 | // 5 | // Created by LoSenTrad on 2020/5/22. 6 | // Copyright © 2020 490790096@qq.com. All rights reserved. 7 | // 8 | 9 | #import "LSTPriorityView.h" 10 | #import 11 | 12 | @implementation LSTPriorityView 13 | 14 | 15 | 16 | #pragma mark - ***** 初始化 ***** 17 | 18 | - (instancetype)initWithFrame:(CGRect)frame { 19 | if (self = [super initWithFrame:frame]) { 20 | [self initSubViews]; 21 | } 22 | return self; 23 | } 24 | 25 | #pragma mark - ***** setter 设置器/数据处理 ***** 26 | 27 | 28 | #pragma mark - ***** setupUI 界面布局 ***** 29 | 30 | - (void)initSubViews { 31 | 32 | self.backgroundColor = UIColor.blueColor; 33 | 34 | [self addSubview:self.titleLab]; 35 | 36 | 37 | 38 | } 39 | 40 | - (void)layoutSubviews { 41 | [super layoutSubviews]; 42 | 43 | [_titleLab mas_makeConstraints:^(MASConstraintMaker *make) { 44 | make.center.equalTo(self); 45 | }]; 46 | 47 | 48 | } 49 | 50 | #pragma mark - ***** other 其他 ***** 51 | 52 | 53 | #pragma mark - ***** Lazy Loading 懒加载 ***** 54 | 55 | - (UILabel *)titleLab { 56 | if(_titleLab) return _titleLab; 57 | _titleLab = [[UILabel alloc] init]; 58 | _titleLab.textColor = UIColor.whiteColor; 59 | _titleLab.numberOfLines = 0; 60 | _titleLab.textAlignment = NSTextAlignmentCenter; 61 | return _titleLab; 62 | } 63 | 64 | @end 65 | -------------------------------------------------------------------------------- /Example/LSTPopView/LSTPopView/常用示例demo/百度云盘分类菜单/LSTPopViewBaiDuView.m: -------------------------------------------------------------------------------- 1 | // 2 | // LSTPopViewTranspondView.m 3 | // LSTPopView_Example 4 | // 5 | // Created by LoSenTrad on 2020/4/24. 6 | // Copyright © 2020 490790096@qq.com. All rights reserved. 7 | // 8 | 9 | #import "LSTPopViewBaiDuView.h" 10 | #import 11 | 12 | @interface LSTPopViewBaiDuView () 13 | 14 | /** <#.....#> */ 15 | @property (nonatomic,strong) UIImageView *imgView; 16 | 17 | @end 18 | 19 | 20 | @implementation LSTPopViewBaiDuView 21 | 22 | #pragma mark - ***** 初始化 ***** 23 | 24 | - (instancetype)initWithFrame:(CGRect)frame { 25 | if (self = [super initWithFrame:frame]) { 26 | [self initSubViews]; 27 | } 28 | return self; 29 | } 30 | 31 | #pragma mark - ***** setter 设置器/数据处理 ***** 32 | 33 | 34 | #pragma mark - ***** setupUI 界面布局 ***** 35 | 36 | - (void)initSubViews { 37 | 38 | [self addSubview:self.imgView]; 39 | 40 | } 41 | 42 | - (void)layoutSubviews { 43 | [super layoutSubviews]; 44 | 45 | [_imgView mas_makeConstraints:^(MASConstraintMaker *make) { 46 | make.top.left.bottom.right.equalTo(self); 47 | }]; 48 | 49 | } 50 | 51 | #pragma mark - ***** other 其他 ***** 52 | 53 | 54 | #pragma mark - ***** Lazy Loading 懒加载 ***** 55 | 56 | - (UIImageView *)imgView { 57 | if(_imgView) return _imgView; 58 | _imgView = [[UIImageView alloc] init]; 59 | _imgView.image = [UIImage imageNamed:@"baidu"]; 60 | return _imgView; 61 | } 62 | 63 | 64 | @end 65 | -------------------------------------------------------------------------------- /Example/LSTPopView/LSTPopView/常用示例demo/微信转发/LSTPopViewTranspondView.m: -------------------------------------------------------------------------------- 1 | // 2 | // LSTPopViewTranspondView.m 3 | // LSTPopView_Example 4 | // 5 | // Created by LoSenTrad on 2020/4/24. 6 | // Copyright © 2020 490790096@qq.com. All rights reserved. 7 | // 8 | 9 | #import "LSTPopViewTranspondView.h" 10 | #import 11 | 12 | @interface LSTPopViewTranspondView () 13 | 14 | /** <#.....#> */ 15 | @property (nonatomic,strong) UIImageView *imgView; 16 | 17 | @end 18 | 19 | 20 | @implementation LSTPopViewTranspondView 21 | 22 | #pragma mark - ***** 初始化 ***** 23 | 24 | - (instancetype)initWithFrame:(CGRect)frame { 25 | if (self = [super initWithFrame:frame]) { 26 | [self initSubViews]; 27 | } 28 | return self; 29 | } 30 | 31 | #pragma mark - ***** setter 设置器/数据处理 ***** 32 | 33 | 34 | #pragma mark - ***** setupUI 界面布局 ***** 35 | 36 | - (void)initSubViews { 37 | 38 | [self addSubview:self.imgView]; 39 | 40 | } 41 | 42 | - (void)layoutSubviews { 43 | [super layoutSubviews]; 44 | 45 | [_imgView mas_makeConstraints:^(MASConstraintMaker *make) { 46 | make.top.left.bottom.right.equalTo(self); 47 | }]; 48 | 49 | } 50 | 51 | #pragma mark - ***** other 其他 ***** 52 | 53 | 54 | #pragma mark - ***** Lazy Loading 懒加载 ***** 55 | 56 | - (UIImageView *)imgView { 57 | if(_imgView) return _imgView; 58 | _imgView = [[UIImageView alloc] init]; 59 | _imgView.image = [UIImage imageNamed:@"转发"]; 60 | return _imgView; 61 | } 62 | 63 | 64 | @end 65 | -------------------------------------------------------------------------------- /Example/LSTPopViewSwift/LSTPopViewSwift/AppDelegate.swift: -------------------------------------------------------------------------------- 1 | // 2 | // AppDelegate.swift 3 | // LSTPopViewSwift 4 | // 5 | // Created by LoSenTrad on 2021/3/2. 6 | // 7 | 8 | import UIKit 9 | 10 | @main 11 | class AppDelegate: UIResponder, UIApplicationDelegate { 12 | 13 | 14 | 15 | func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool { 16 | // Override point for customization after application launch. 17 | return true 18 | } 19 | 20 | // MARK: UISceneSession Lifecycle 21 | 22 | func application(_ application: UIApplication, configurationForConnecting connectingSceneSession: UISceneSession, options: UIScene.ConnectionOptions) -> UISceneConfiguration { 23 | // Called when a new scene session is being created. 24 | // Use this method to select a configuration to create the new scene with. 25 | return UISceneConfiguration(name: "Default Configuration", sessionRole: connectingSceneSession.role) 26 | } 27 | 28 | func application(_ application: UIApplication, didDiscardSceneSessions sceneSessions: Set) { 29 | // Called when the user discards a scene session. 30 | // If any sessions were discarded while the application was not running, this will be called shortly after application:didFinishLaunchingWithOptions. 31 | // Use this method to release any resources that were specific to the discarded scenes, as they will not return. 32 | } 33 | 34 | 35 | } 36 | 37 | -------------------------------------------------------------------------------- /Example/LSTPopView/Images.xcassets/AppIcon.appiconset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "filename" : "lstiPhoneNotification_20pt@2x.png", 5 | "idiom" : "iphone", 6 | "scale" : "2x", 7 | "size" : "20x20" 8 | }, 9 | { 10 | "filename" : "lstiPhoneNotification_20pt@3x.png", 11 | "idiom" : "iphone", 12 | "scale" : "3x", 13 | "size" : "20x20" 14 | }, 15 | { 16 | "filename" : "lstiPhoneSpootlight5_29pt@2x.png", 17 | "idiom" : "iphone", 18 | "scale" : "2x", 19 | "size" : "29x29" 20 | }, 21 | { 22 | "filename" : "lstiPhoneSpootlight5_29pt@3x.png", 23 | "idiom" : "iphone", 24 | "scale" : "3x", 25 | "size" : "29x29" 26 | }, 27 | { 28 | "filename" : "lstiPhoneSpootlight7_40pt@2x.png", 29 | "idiom" : "iphone", 30 | "scale" : "2x", 31 | "size" : "40x40" 32 | }, 33 | { 34 | "filename" : "lstiPhoneSpootlight7_40pt@3x.png", 35 | "idiom" : "iphone", 36 | "scale" : "3x", 37 | "size" : "40x40" 38 | }, 39 | { 40 | "filename" : "lstiPhoneApp_60pt@2x.png", 41 | "idiom" : "iphone", 42 | "scale" : "2x", 43 | "size" : "60x60" 44 | }, 45 | { 46 | "filename" : "lstiPhoneApp_60pt@3x.png", 47 | "idiom" : "iphone", 48 | "scale" : "3x", 49 | "size" : "60x60" 50 | }, 51 | { 52 | "idiom" : "ios-marketing", 53 | "scale" : "1x", 54 | "size" : "1024x1024" 55 | } 56 | ], 57 | "info" : { 58 | "author" : "xcode", 59 | "version" : 1 60 | } 61 | } 62 | -------------------------------------------------------------------------------- /Example/LSTPopView/LSTPopView/常用示例demo/动态高度变化/LSTPopViewHeightChangeView.m: -------------------------------------------------------------------------------- 1 | // 2 | // LSTPopViewHeightChangeView.m 3 | // LSTPopView_Example 4 | // 5 | // Created by LoSenTrad on 2021/2/26. 6 | // Copyright © 2021 490790096@qq.com. All rights reserved. 7 | // 8 | 9 | #import "LSTPopViewHeightChangeView.h" 10 | #import 11 | #import 12 | 13 | @interface LSTPopViewHeightChangeView () 14 | 15 | @property (weak, nonatomic) IBOutlet UIView *fileView; 16 | /** */ 17 | @property (nonatomic, assign) BOOL isOpen; 18 | @property (weak, nonatomic) IBOutlet UIImageView *imgView; 19 | 20 | 21 | @end 22 | 23 | @implementation LSTPopViewHeightChangeView 24 | 25 | #pragma mark - ***** 初始化 ***** 26 | 27 | - (void)awakeFromNib { 28 | [super awakeFromNib]; 29 | [self initSubViews]; 30 | } 31 | 32 | #pragma mark - ***** setter 设置器/数据处理 ***** 33 | 34 | 35 | #pragma mark - ***** setupUI 界面布局 ***** 36 | 37 | - (void)initSubViews { 38 | 39 | [self.fileView addTapGestureEventHandle:^(id _Nonnull sender, UITapGestureRecognizer * _Nonnull gestureRecognizer) { 40 | if (self.isOpen) { 41 | self.height = 170; 42 | self.isOpen = NO; 43 | self.imgView.image = [UIImage imageNamed:@"nav_right"]; 44 | 45 | }else { 46 | self.height = 170+120; 47 | self.isOpen = YES; 48 | self.imgView.image = [UIImage imageNamed:@"nav_down"]; 49 | } 50 | }]; 51 | 52 | 53 | } 54 | 55 | - (void)layoutSubviews { 56 | [super layoutSubviews]; 57 | 58 | 59 | } 60 | 61 | #pragma mark - ***** other 其他 ***** 62 | 63 | 64 | #pragma mark - ***** Lazy Loading 懒加载 ***** 65 | 66 | @end 67 | -------------------------------------------------------------------------------- /Example/LSTPopViewSwift/LSTPopViewSwift/Base.lproj/Main.storyboard: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | -------------------------------------------------------------------------------- /Example/LSTPopView/LSTPopView/多窗口测试/LSTMutiPopView.m: -------------------------------------------------------------------------------- 1 | // 2 | // LSTMutiPopView.m 3 | // LSTPopView_Example 4 | // 5 | // Created by LoSenTrad on 2020/3/31. 6 | // Copyright © 2020 490790096@qq.com. All rights reserved. 7 | // 8 | 9 | #import "LSTMutiPopView.h" 10 | 11 | @interface LSTMutiPopView () 12 | 13 | /** <#.....#> */ 14 | @property (nonatomic,strong) UIButton *closeBtn; 15 | 16 | @end 17 | 18 | @implementation LSTMutiPopView 19 | 20 | #pragma mark - ***** 初始化 ***** 21 | 22 | - (instancetype)initWithFrame:(CGRect)frame { 23 | if (self = [super initWithFrame:frame]) { 24 | [self initSubViews]; 25 | } 26 | return self; 27 | } 28 | 29 | #pragma mark - ***** setter 设置器/数据处理 ***** 30 | 31 | 32 | #pragma mark - ***** setupUI 界面布局 ***** 33 | 34 | - (void)initSubViews { 35 | 36 | self.backgroundColor = UIColor.whiteColor; 37 | [self addSubview:self.closeBtn]; 38 | 39 | _closeBtn.frame = CGRectMake(150, 80, 100, 44); 40 | } 41 | 42 | - (void)layoutSubviews { 43 | [super layoutSubviews]; 44 | 45 | 46 | 47 | } 48 | 49 | #pragma mark - ***** other 其他 ***** 50 | 51 | - (void)closeBtnAction:(UIButton *)sender { 52 | if (self.closeBlock) { 53 | self.closeBlock(); 54 | } 55 | } 56 | 57 | 58 | #pragma mark - ***** Lazy Loading 懒加载 ***** 59 | 60 | - (UIButton *)closeBtn { 61 | if(_closeBtn) return _closeBtn; 62 | _closeBtn = [[UIButton alloc] init]; 63 | _closeBtn.backgroundColor = UIColor.orangeColor; 64 | [_closeBtn setTitle:@"添加窗口" forState:UIControlStateNormal]; 65 | [_closeBtn setTitleColor:UIColor.whiteColor forState:UIControlStateNormal]; 66 | [_closeBtn addTarget:self action:@selector(closeBtnAction:) forControlEvents:UIControlEventTouchUpInside]; 67 | return _closeBtn; 68 | } 69 | 70 | @end 71 | -------------------------------------------------------------------------------- /Example/LSTPopView/LSTPopView/LSTModel.m: -------------------------------------------------------------------------------- 1 | // 2 | // LSTModel.m 3 | // LSTPopView_Example 4 | // 5 | // Created by LoSenTrad on 2020/5/14. 6 | // Copyright © 2020 490790096@qq.com. All rights reserved. 7 | // 8 | 9 | #import "LSTModel.h" 10 | 11 | @implementation LSTModel 12 | 13 | //@property (nonatomic, assign) NSTimeInterval timeInterval; 14 | ///** 定时器执行block */ 15 | //@property (nonatomic, copy) LSTModelBlock handleBlock; 16 | ///** 每次计时单位增量 */ 17 | //@property (nonatomic, assign) NSTimeInterval unit; 18 | ///** 是否递增 YES:递增 NO:递减 */ 19 | //@property (nonatomic, assign) BOOL increase; 20 | ///** 是否本地持久化保存定时数据 */ 21 | //@property (nonatomic,assign) BOOL isDisk; 22 | ///** 是否暂停 */ 23 | //@property (nonatomic,assign) BOOL isPause; 24 | ///** 标识 */ 25 | //@property (nonatomic, copy) NSString *identifier; 26 | 27 | - (void)encodeWithCoder:(NSCoder *)aCoder { 28 | [aCoder encodeDouble:self.timeInterval forKey:@"timeInterval"]; 29 | [aCoder encodeDouble:self.unit forKey:@"unit"]; 30 | [aCoder encodeBool:self.increase forKey:@"increase"]; 31 | [aCoder encodeBool:self.isDisk forKey:@"isDisk"]; 32 | [aCoder encodeBool:self.isPause forKey:@"isPause"]; 33 | [aCoder encodeObject:self.identifier forKey:@"identifier"]; 34 | } 35 | 36 | - (id)initWithCoder:(NSCoder *)aDecoder { 37 | self = [super init]; 38 | if (self) { 39 | self.timeInterval = [aDecoder decodeDoubleForKey:@"timeInterval"]; 40 | self.unit = [aDecoder decodeDoubleForKey:@"unit"]; 41 | self.increase = [aDecoder decodeBoolForKey:@"increase"]; 42 | self.isDisk = [aDecoder decodeBoolForKey:@"isDisk"]; 43 | self.isPause = [aDecoder decodeBoolForKey:@"isPause"]; 44 | self.identifier = [aDecoder decodeObjectForKey:@"identifier"]; 45 | } 46 | return self; 47 | } 48 | 49 | @end 50 | -------------------------------------------------------------------------------- /Example/LSTPopViewSwift/LSTPopViewSwift/Base.lproj/LaunchScreen.storyboard: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | -------------------------------------------------------------------------------- /Example/LSTPopView/LSTPopView-Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | en 7 | CFBundleDisplayName 8 | $(PRODUCT_NAME) 9 | CFBundleExecutable 10 | ${EXECUTABLE_NAME} 11 | CFBundleIdentifier 12 | $(PRODUCT_BUNDLE_IDENTIFIER) 13 | CFBundleInfoDictionaryVersion 14 | 6.0 15 | CFBundleName 16 | ${PRODUCT_NAME} 17 | CFBundlePackageType 18 | APPL 19 | CFBundleShortVersionString 20 | $(MARKETING_VERSION) 21 | CFBundleSignature 22 | ???? 23 | CFBundleVersion 24 | $(CURRENT_PROJECT_VERSION) 25 | LSRequiresIPhoneOS 26 | 27 | UILaunchStoryboardName 28 | LaunchScreen 29 | UIRequiredDeviceCapabilities 30 | 31 | armv7 32 | 33 | UISupportedInterfaceOrientations 34 | 35 | UIInterfaceOrientationPortrait 36 | UIInterfaceOrientationLandscapeLeft 37 | UIInterfaceOrientationLandscapeRight 38 | 39 | UISupportedInterfaceOrientations~ipad 40 | 41 | UIInterfaceOrientationPortrait 42 | UIInterfaceOrientationPortraitUpsideDown 43 | UIInterfaceOrientationLandscapeLeft 44 | UIInterfaceOrientationLandscapeRight 45 | 46 | NSAppTransportSecurity 47 | 48 | NSAllowsArbitraryLoads 49 | 50 | 51 | 52 | 53 | -------------------------------------------------------------------------------- /Example/LSTPopView/LSTPopView/规避键盘测试/LSTAutoKeyboardVC.m: -------------------------------------------------------------------------------- 1 | // 2 | // LSTAutoKeyboardVC.m 3 | // LSTPopView_Example 4 | // 5 | // Created by LoSenTrad on 2020/4/15. 6 | // Copyright © 2020 490790096@qq.com. All rights reserved. 7 | // 8 | 9 | #import "LSTAutoKeyboardVC.h" 10 | #import "LSTKeyboardXibView.h" 11 | #import 12 | 13 | @interface LSTAutoKeyboardVC () 14 | 15 | @end 16 | 17 | @implementation LSTAutoKeyboardVC 18 | 19 | #pragma mark - ***** Controller Life Cycle 控制器生命周期 ***** 20 | 21 | - (void)viewDidLoad { 22 | [super viewDidLoad]; 23 | 24 | 25 | [self layoutSubViewUI]; 26 | 27 | [self show]; 28 | 29 | 30 | 31 | } 32 | 33 | 34 | 35 | #pragma mark - ***** setupUI 界面布局 ***** 36 | 37 | - (void)layoutSubViewUI { 38 | 39 | self.view.backgroundColor = UIColor.whiteColor; 40 | 41 | 42 | } 43 | #pragma mark - ***** Data Request 数据请求 ***** 44 | 45 | 46 | #pragma mark - ***** Other 其他 ***** 47 | 48 | - (void)show { 49 | UINib *nib = [UINib nibWithNibName:@"LSTKeyboardXibView" bundle:nil]; 50 | LSTKeyboardXibView *view = [nib instantiateWithOwner:nil options:nil].firstObject; 51 | view.layer.cornerRadius = 10; 52 | view.layer.masksToBounds = YES; 53 | 54 | 55 | LSTPopView *popView = [LSTPopView initWithCustomView:view popStyle:1 dismissStyle:LSTDismissStyleSmoothToBottom]; 56 | // popView.parentView = self.view; 57 | LSTPopViewWK(popView); 58 | LSTPopViewWK(self); 59 | popView.avoidKeyboardSpace = 15; 60 | popView.bgClickBlock = ^{ 61 | [wk_popView dismiss]; 62 | NSLog(@"点击了背景"); 63 | }; 64 | view.addBlock = ^(id sender) { 65 | [wk_self show]; 66 | }; 67 | [popView pop]; 68 | } 69 | 70 | 71 | 72 | - (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event { 73 | [self show]; 74 | } 75 | 76 | #pragma mark - ***** Lazy Loading 懒加载 ***** 77 | 78 | 79 | @end 80 | -------------------------------------------------------------------------------- /Example/LSTPopView/Base.lproj/LaunchScreen.storyboard: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | -------------------------------------------------------------------------------- /Example/LSTPopView/LSTPopView/多窗口测试/LSTMutiPopViewVC.m: -------------------------------------------------------------------------------- 1 | // 2 | // LSTMutiPopViewVC.m 3 | // LSTPopView_Example 4 | // 5 | // Created by LoSenTrad on 2020/3/31. 6 | // Copyright © 2020 490790096@qq.com. All rights reserved. 7 | // 8 | 9 | #import "LSTMutiPopViewVC.h" 10 | #import "LSTPopViewCodeView.h" 11 | #import 12 | #import "LSTMutiPopView.h" 13 | 14 | #define LSTRGBColor(r, g, b) [UIColor colorWithRed:(r)/255.0 green:(g)/255.0 blue:(b)/255.0 alpha:1] 15 | #define LSTRGBAColor(r, g, b ,a) [UIColor colorWithRed:(r)/255.0 green:(g)/255.0 blue:(b)/255.0 alpha:a] 16 | #define LSTRandColor LSTRGBColor(arc4random_uniform(255), arc4random_uniform(255), arc4random_uniform(255)) 17 | 18 | @interface LSTMutiPopViewVC () 19 | 20 | @end 21 | 22 | @implementation LSTMutiPopViewVC 23 | 24 | - (void)viewDidLoad { 25 | [super viewDidLoad]; 26 | // Do any additional setup after loading the view. 27 | self.view.backgroundColor = UIColor.whiteColor; 28 | } 29 | 30 | 31 | 32 | - (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event { 33 | [self open]; 34 | } 35 | 36 | 37 | - (void)open { 38 | LSTMutiPopView *view = [[LSTMutiPopView alloc] init]; 39 | view.layer.cornerRadius = 10; 40 | view.layer.masksToBounds = YES; 41 | view.backgroundColor = LSTRandColor; 42 | 43 | view.frame = CGRectMake(0, 0, 300, 300); 44 | 45 | LSTPopView *popView = [LSTPopView initWithCustomView:view popStyle:LSTPopStyleSmoothFromTop dismissStyle:LSTDismissStyleSmoothToBottom]; 46 | popView.hemStyle = LSTHemStyleCenter; 47 | popView.adjustY = 10; 48 | popView.isClickFeedback = YES; 49 | // __weak typeof(popView) weakPopview = popView; 50 | LSTPopViewWK(popView); 51 | LSTPopViewWK(self); 52 | popView.bgClickBlock = ^{ 53 | NSLog(@"点击了背景"); 54 | [wk_popView dismiss]; 55 | }; 56 | 57 | view.closeBlock = ^{ 58 | [wk_self open]; 59 | }; 60 | 61 | [popView popWithStyle:LSTPopStyleSmoothFromTop duration:0.5]; 62 | } 63 | 64 | @end 65 | -------------------------------------------------------------------------------- /Example/LSTPopViewSwift/LSTPopViewSwift/Assets.xcassets/AppIcon.appiconset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "iphone", 5 | "scale" : "2x", 6 | "size" : "20x20" 7 | }, 8 | { 9 | "idiom" : "iphone", 10 | "scale" : "3x", 11 | "size" : "20x20" 12 | }, 13 | { 14 | "idiom" : "iphone", 15 | "scale" : "2x", 16 | "size" : "29x29" 17 | }, 18 | { 19 | "idiom" : "iphone", 20 | "scale" : "3x", 21 | "size" : "29x29" 22 | }, 23 | { 24 | "idiom" : "iphone", 25 | "scale" : "2x", 26 | "size" : "40x40" 27 | }, 28 | { 29 | "idiom" : "iphone", 30 | "scale" : "3x", 31 | "size" : "40x40" 32 | }, 33 | { 34 | "idiom" : "iphone", 35 | "scale" : "2x", 36 | "size" : "60x60" 37 | }, 38 | { 39 | "idiom" : "iphone", 40 | "scale" : "3x", 41 | "size" : "60x60" 42 | }, 43 | { 44 | "idiom" : "ipad", 45 | "scale" : "1x", 46 | "size" : "20x20" 47 | }, 48 | { 49 | "idiom" : "ipad", 50 | "scale" : "2x", 51 | "size" : "20x20" 52 | }, 53 | { 54 | "idiom" : "ipad", 55 | "scale" : "1x", 56 | "size" : "29x29" 57 | }, 58 | { 59 | "idiom" : "ipad", 60 | "scale" : "2x", 61 | "size" : "29x29" 62 | }, 63 | { 64 | "idiom" : "ipad", 65 | "scale" : "1x", 66 | "size" : "40x40" 67 | }, 68 | { 69 | "idiom" : "ipad", 70 | "scale" : "2x", 71 | "size" : "40x40" 72 | }, 73 | { 74 | "idiom" : "ipad", 75 | "scale" : "1x", 76 | "size" : "76x76" 77 | }, 78 | { 79 | "idiom" : "ipad", 80 | "scale" : "2x", 81 | "size" : "76x76" 82 | }, 83 | { 84 | "idiom" : "ipad", 85 | "scale" : "2x", 86 | "size" : "83.5x83.5" 87 | }, 88 | { 89 | "idiom" : "ios-marketing", 90 | "scale" : "1x", 91 | "size" : "1024x1024" 92 | } 93 | ], 94 | "info" : { 95 | "author" : "xcode", 96 | "version" : 1 97 | } 98 | } 99 | -------------------------------------------------------------------------------- /Example/LSTPopViewSwift/LSTPopViewSwift/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | $(DEVELOPMENT_LANGUAGE) 7 | CFBundleExecutable 8 | $(EXECUTABLE_NAME) 9 | CFBundleIdentifier 10 | $(PRODUCT_BUNDLE_IDENTIFIER) 11 | CFBundleInfoDictionaryVersion 12 | 6.0 13 | CFBundleName 14 | $(PRODUCT_NAME) 15 | CFBundlePackageType 16 | $(PRODUCT_BUNDLE_PACKAGE_TYPE) 17 | CFBundleShortVersionString 18 | 1.0 19 | CFBundleVersion 20 | 1 21 | LSRequiresIPhoneOS 22 | 23 | UIApplicationSceneManifest 24 | 25 | UIApplicationSupportsMultipleScenes 26 | 27 | UISceneConfigurations 28 | 29 | UIWindowSceneSessionRoleApplication 30 | 31 | 32 | UISceneConfigurationName 33 | Default Configuration 34 | UISceneDelegateClassName 35 | $(PRODUCT_MODULE_NAME).SceneDelegate 36 | UISceneStoryboardFile 37 | Main 38 | 39 | 40 | 41 | 42 | UIApplicationSupportsIndirectInputEvents 43 | 44 | UILaunchStoryboardName 45 | LaunchScreen 46 | UIMainStoryboardFile 47 | Main 48 | UIRequiredDeviceCapabilities 49 | 50 | armv7 51 | 52 | UISupportedInterfaceOrientations 53 | 54 | UIInterfaceOrientationPortrait 55 | UIInterfaceOrientationLandscapeLeft 56 | UIInterfaceOrientationLandscapeRight 57 | 58 | UISupportedInterfaceOrientations~ipad 59 | 60 | UIInterfaceOrientationPortrait 61 | UIInterfaceOrientationPortraitUpsideDown 62 | UIInterfaceOrientationLandscapeLeft 63 | UIInterfaceOrientationLandscapeRight 64 | 65 | 66 | 67 | -------------------------------------------------------------------------------- /Example/LSTPopView/LSTPopView/纯代码自定义view/LSTPopViewCodeView.m: -------------------------------------------------------------------------------- 1 | // 2 | // LSTPopViewCodeView.m 3 | // LSTAlertView_Example 4 | // 5 | // Created by LoSenTrad on 2020/2/3. 6 | // Copyright © 2020 490790096@qq.com. All rights reserved. 7 | // 8 | 9 | #import "LSTPopViewCodeView.h" 10 | #import 11 | 12 | 13 | @interface LSTPopViewCodeView () 14 | 15 | /** <#.....#> */ 16 | @property (nonatomic,strong) UIButton *closeBtn; 17 | /** <#.....#> */ 18 | @property (nonatomic,strong) UIImageView *imgView; 19 | 20 | @end 21 | 22 | @implementation LSTPopViewCodeView 23 | 24 | #pragma mark - ***** 初始化 ***** 25 | 26 | - (instancetype)initWithFrame:(CGRect)frame { 27 | if (self = [super initWithFrame:frame]) { 28 | [self initSubViews]; 29 | } 30 | return self; 31 | } 32 | 33 | #pragma mark - ***** setter 设置器/数据处理 ***** 34 | - (void)dealloc { 35 | 36 | } 37 | 38 | 39 | #pragma mark - ***** setupUI 界面布局 ***** 40 | 41 | - (void)initSubViews { 42 | 43 | [self addSubview:self.imgView]; 44 | [self.imgView addSubview:self.closeBtn]; 45 | 46 | 47 | } 48 | 49 | - (void)layoutSubviews { 50 | [super layoutSubviews]; 51 | 52 | [self.imgView mas_makeConstraints:^(MASConstraintMaker *make) { 53 | make.top.left.bottom.right.equalTo(self); 54 | }]; 55 | 56 | [_closeBtn mas_makeConstraints:^(MASConstraintMaker *make) { 57 | make.size.mas_equalTo(CGSizeMake(30, 30)); 58 | make.top.equalTo(self.imgView).offset(8); 59 | make.right.equalTo(self.imgView).offset(-8); 60 | 61 | }]; 62 | 63 | 64 | } 65 | 66 | #pragma mark - ***** other 其他 ***** 67 | 68 | - (void)closeBtnAction { 69 | if (self.closeBlock) { 70 | self.closeBlock(); 71 | } 72 | 73 | } 74 | 75 | #pragma mark - ***** Lazy Loading 懒加载 ***** 76 | 77 | - (UIImageView *)imgView { 78 | if(_imgView) return _imgView; 79 | _imgView = [[UIImageView alloc] init]; 80 | _imgView.image = [UIImage imageNamed:@"1234"]; 81 | _imgView.backgroundColor = UIColor.clearColor; 82 | _imgView.userInteractionEnabled = YES; 83 | return _imgView; 84 | } 85 | 86 | - (UIButton *)closeBtn { 87 | if(_closeBtn) return _closeBtn; 88 | _closeBtn = [[UIButton alloc] init]; 89 | [_closeBtn setImage:[UIImage imageNamed:@"close"] forState:UIControlStateNormal]; 90 | [_closeBtn addTarget:self action:@selector(closeBtnAction) forControlEvents:UIControlEventTouchUpInside]; 91 | return _closeBtn; 92 | } 93 | 94 | 95 | @end 96 | -------------------------------------------------------------------------------- /Example/LSTPopViewSwift/LSTPopViewSwift/SceneDelegate.swift: -------------------------------------------------------------------------------- 1 | // 2 | // SceneDelegate.swift 3 | // LSTPopViewSwift 4 | // 5 | // Created by LoSenTrad on 2021/3/2. 6 | // 7 | 8 | import UIKit 9 | 10 | class SceneDelegate: UIResponder, UIWindowSceneDelegate { 11 | 12 | var window: UIWindow? 13 | 14 | 15 | func scene(_ scene: UIScene, willConnectTo session: UISceneSession, options connectionOptions: UIScene.ConnectionOptions) { 16 | // Use this method to optionally configure and attach the UIWindow `window` to the provided UIWindowScene `scene`. 17 | // If using a storyboard, the `window` property will automatically be initialized and attached to the scene. 18 | // This delegate does not imply the connecting scene or session are new (see `application:configurationForConnectingSceneSession` instead). 19 | guard let _ = (scene as? UIWindowScene) else { return } 20 | } 21 | 22 | func sceneDidDisconnect(_ scene: UIScene) { 23 | // Called as the scene is being released by the system. 24 | // This occurs shortly after the scene enters the background, or when its session is discarded. 25 | // Release any resources associated with this scene that can be re-created the next time the scene connects. 26 | // The scene may re-connect later, as its session was not necessarily discarded (see `application:didDiscardSceneSessions` instead). 27 | } 28 | 29 | func sceneDidBecomeActive(_ scene: UIScene) { 30 | // Called when the scene has moved from an inactive state to an active state. 31 | // Use this method to restart any tasks that were paused (or not yet started) when the scene was inactive. 32 | } 33 | 34 | func sceneWillResignActive(_ scene: UIScene) { 35 | // Called when the scene will move from an active state to an inactive state. 36 | // This may occur due to temporary interruptions (ex. an incoming phone call). 37 | } 38 | 39 | func sceneWillEnterForeground(_ scene: UIScene) { 40 | // Called as the scene transitions from the background to the foreground. 41 | // Use this method to undo the changes made on entering the background. 42 | } 43 | 44 | func sceneDidEnterBackground(_ scene: UIScene) { 45 | // Called as the scene transitions from the foreground to the background. 46 | // Use this method to save data, release shared resources, and store enough scene-specific state information 47 | // to restore the scene back to its current state. 48 | } 49 | 50 | 51 | } 52 | 53 | -------------------------------------------------------------------------------- /Example/LSTPopView/LSTPopView/app启动多窗口实例/首页广告/LSTIndexAdView.xib: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | -------------------------------------------------------------------------------- /Example/LSTPopView/LSTPopView/app启动多窗口实例/用户隐私/LSTAppPrivacyView.xib: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | -------------------------------------------------------------------------------- /Example/LSTPopView/LSTPopView/app启动多窗口实例/打开推送/LSTOpenPushView.xib: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | -------------------------------------------------------------------------------- /Example/LSTPopView/LSTPopView/app启动多窗口实例/app更新/LSTAppUpdateView.xib: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | -------------------------------------------------------------------------------- /Example/LSTPopView/LSTPopView/常用示例demo/抖音/LSTPopViewdoyinView.xib: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | -------------------------------------------------------------------------------- /Example/LSTPopView/LSTPopView/常用示例demo/QQ顶部/LSTPopViewqqtopView.xib: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | -------------------------------------------------------------------------------- /Example/LSTPopView/LSTPopView/常用示例demo/左侧边栏/LSTPopViewrLSidebarView.xib: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | -------------------------------------------------------------------------------- /Example/LSTPopView/LSTPopView/常用示例demo/加载指示器/LSTPopViewloadingView.xib: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | -------------------------------------------------------------------------------- /Example/LSTPopView/LSTPopView/常用属性调试/LSTPopViewTestView.m: -------------------------------------------------------------------------------- 1 | // 2 | // LSTPopViewTestView.m 3 | // LSTAlertView_Example 4 | // 5 | // Created by LoSenTrad on 2020/3/3. 6 | // Copyright © 2020 490790096@qq.com. All rights reserved. 7 | // 8 | 9 | #import "LSTPopViewTestView.h" 10 | #import 11 | 12 | @interface LSTPopViewTestView () 13 | 14 | /** <#...#> */ 15 | @property (nonatomic, assign) double wValue; 16 | 17 | /** <#...#> */ 18 | @property (nonatomic, assign) double sValue; 19 | /** <#...#> */ 20 | @property (nonatomic, assign) double xValue; 21 | /** <#...#> */ 22 | @property (nonatomic, assign) double yValue; 23 | 24 | @end 25 | 26 | @implementation LSTPopViewTestView 27 | 28 | - (void)awakeFromNib { 29 | [super awakeFromNib]; 30 | self.sValue = 0; 31 | self.xValue = 0; 32 | self.yValue = 0; 33 | self.wValue = 0; 34 | 35 | self.timeLab.layer.cornerRadius = 15; 36 | self.timeLab.layer.masksToBounds = YES; 37 | 38 | self.xStepper.minimumValue = -100; 39 | self.xStepper.maximumValue = 100; 40 | self.xStepper.stepValue = 5.0; 41 | 42 | 43 | self.yStepper.minimumValue = -100; 44 | self.yStepper.maximumValue = 100; 45 | self.yStepper.stepValue = 5.0; 46 | 47 | self.heightStepper.minimumValue = -100; 48 | self.heightStepper.maximumValue = 100; 49 | self.heightStepper.stepValue = 5.0; 50 | 51 | [self.xStepper addTarget:self action:@selector(xValueChanged:) forControlEvents:(UIControlEventValueChanged)]; 52 | [self.yStepper addTarget:self action:@selector(yValueChanged:) forControlEvents:(UIControlEventValueChanged)]; 53 | } 54 | 55 | - (void)xValueChanged:(UIStepper *)sender{ 56 | 57 | self.xLab.text = [NSString stringWithFormat:@"%1.0lf",sender.value]; 58 | if (self.xStepperBlock) { 59 | self.xStepperBlock(sender.value); 60 | } 61 | } 62 | 63 | - (void)yValueChanged:(UIStepper *)sender{ 64 | 65 | self.yLab.text = [NSString stringWithFormat:@"%1.0lf",sender.value]; 66 | if (self.yStepperBlock) { 67 | self.yStepperBlock(sender.value); 68 | } 69 | } 70 | - (IBAction)height:(UIStepper *)sender { 71 | 72 | if (sender.value>self.sValue) { 73 | self.pv_Height = self.pv_Height+10; 74 | }else{ 75 | self.pv_Height = self.pv_Height-10; 76 | } 77 | self.sValue = sender.value; 78 | } 79 | - (IBAction)width:(UIStepper *)sender { 80 | if (sender.value>self.wValue) { 81 | self.pv_Width = self.pv_Width+10; 82 | }else{ 83 | self.pv_Width = self.pv_Width-10; 84 | } 85 | self.wValue = sender.value; 86 | } 87 | 88 | - (IBAction)closePopView:(UIButton *)sender { 89 | if (self.closeBlock) { 90 | self.closeBlock(nil); 91 | } 92 | 93 | } 94 | 95 | - (IBAction)pushVCAction:(UIButton *)sender { 96 | if (self.pushBlock) { 97 | self.pushBlock(sender); 98 | } 99 | } 100 | 101 | @end 102 | -------------------------------------------------------------------------------- /Example/LSTPopView/LSTPopView/XIB自定义View/LSTPopViewXibView.xib: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | -------------------------------------------------------------------------------- /Example/LSTPopView/LSTPopView/popView内存管理调试/LSTPopViewRAMVC.m: -------------------------------------------------------------------------------- 1 | // 2 | // LSTPopViewRAMVC.m 3 | // LSTPopView_Example 4 | // 5 | // Created by LoSenTrad on 2020/4/21. 6 | // Copyright © 2020 490790096@qq.com. All rights reserved. 7 | // 8 | 9 | #import "LSTPopViewRAMVC.h" 10 | #import 11 | #import "LSTPopViewCodeView.h" 12 | #import 13 | //#import 14 | 15 | @interface LSTPopViewRAMVC () 16 | 17 | /** <#.....#> */ 18 | @property (nonatomic,strong) UILabel *titleLab; 19 | 20 | @end 21 | 22 | @implementation LSTPopViewRAMVC 23 | 24 | #pragma mark - ***** Controller Life Cycle 控制器生命周期 ***** 25 | 26 | - (void)viewDidLoad { 27 | [super viewDidLoad]; 28 | 29 | 30 | [self layoutSubViewUI]; 31 | 32 | } 33 | - (void)dealloc { 34 | 35 | } 36 | 37 | 38 | 39 | #pragma mark - ***** setupUI 界面布局 ***** 40 | 41 | - (void)layoutSubViewUI { 42 | self.view.backgroundColor = UIColor.whiteColor; 43 | 44 | [self.view addSubview:self.titleLab]; 45 | [_titleLab mas_makeConstraints:^(MASConstraintMaker *make) { 46 | make.center.equalTo(self.view); 47 | make.left.equalTo(self.view).offset(40); 48 | make.right.equalTo(self.view).offset(-40); 49 | }]; 50 | } 51 | 52 | 53 | - (void)open { 54 | LSTPopViewCodeView *view = [[LSTPopViewCodeView alloc] init]; 55 | view.layer.cornerRadius = 10; 56 | view.layer.masksToBounds = YES; 57 | 58 | 59 | view.frame = CGRectMake(0, 0, 300, 300); 60 | 61 | LSTPopView *popView = [LSTPopView initWithCustomView:view parentView:self.view popStyle:LSTPopStyleSmoothFromTop dismissStyle:LSTDismissStyleSmoothToBottom]; 62 | popView.hemStyle = LSTHemStyleCenter; 63 | popView.adjustY = 10; 64 | popView.isClickFeedback = YES; 65 | popView.bgColor = UIColor.blackColor; 66 | LSTPopViewWK(popView) 67 | popView.bgClickBlock = ^{ 68 | NSLog(@"点击了背景"); 69 | [wk_popView dismiss]; 70 | }; 71 | 72 | view.closeBlock = ^{ 73 | [wk_popView dismissWithStyle:LSTDismissStyleSmoothToTop duration:1.0]; 74 | }; 75 | 76 | [popView popWithStyle:LSTPopStyleCardDropFromLeft duration:0.5]; 77 | } 78 | 79 | - (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event { 80 | 81 | [self open]; 82 | } 83 | 84 | 85 | #pragma mark - ***** Data Request 数据请求 ***** 86 | 87 | 88 | #pragma mark - ***** Other 其他 ***** 89 | 90 | #pragma mark - ***** Lazy Loading 懒加载 ***** 91 | 92 | - (UILabel *)titleLab { 93 | if(_titleLab) return _titleLab; 94 | _titleLab = [[UILabel alloc] init]; 95 | _titleLab.textColor = UIColor.blackColor; 96 | // _titleLab.textAlignment = NSTextAlignmentCenter; 97 | _titleLab.numberOfLines = 0; 98 | _titleLab.text = @"1. 点击屏幕\n2. 在当前控制器view中弹出弹窗\n3. 保持弹窗显示状态,然后退出(pop)当前控制器. \n4. 当这个控制器销毁的时候,self.view上的弹窗也会随之一起销毁(自动内存管理回收) \n5. 注意查看控制台日志输出或者右上角调试小窗"; 99 | return _titleLab; 100 | } 101 | 102 | @end 103 | -------------------------------------------------------------------------------- /Example/LSTPopView/LSTPopView/生命周期(多代理)/LSTPopViewLifeCycleTestVC.m: -------------------------------------------------------------------------------- 1 | // 2 | // LSTPopViewLifeCycleTestVC.m 3 | // LSTPopView_Example 4 | // 5 | // Created by LoSenTrad on 2020/6/5. 6 | // Copyright © 2020 490790096@qq.com. All rights reserved. 7 | // 8 | 9 | #import "LSTPopViewLifeCycleTestVC.h" 10 | #import 11 | #import 12 | #import 13 | #import "LSTLifeCycleView.h" 14 | 15 | @interface LSTPopViewLifeCycleTestVC () 16 | 17 | @end 18 | 19 | @implementation LSTPopViewLifeCycleTestVC 20 | 21 | #pragma mark - ***** Controller Life Cycle 控制器生命周期 ***** 22 | 23 | - (void)viewDidLoad { 24 | [super viewDidLoad]; 25 | 26 | [self layoutSubViewUI]; 27 | 28 | } 29 | 30 | 31 | 32 | #pragma mark - ***** setupUI 界面布局 ***** 33 | 34 | - (void)layoutSubViewUI { 35 | self.view.backgroundColor = UIColor.whiteColor; 36 | 37 | } 38 | 39 | - (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event { 40 | [self test]; 41 | } 42 | 43 | #pragma mark - ***** Other 其他 ***** 44 | 45 | - (void)test { 46 | LSTLifeCycleView *view = [[LSTLifeCycleView alloc] init]; 47 | view.size = CGSizeMake(350, 350); 48 | view.backgroundColor = UIColor.orangeColor; 49 | view.layer.cornerRadius = 5; 50 | view.layer.masksToBounds = YES; 51 | LSTPopView *popView = [LSTPopView initWithCustomView:view 52 | popStyle:LSTPopStyleSmoothFromBottom 53 | dismissStyle:LSTDismissStyleSmoothToBottom]; 54 | LSTPopViewWK(popView); 55 | popView.popDuration = 0.5; 56 | popView.dismissDuration = 0.5; 57 | popView.delegate = self; 58 | popView.delegate = view; 59 | popView.bgClickBlock = ^{ 60 | [wk_popView dismiss]; 61 | }; 62 | popView.showTime = 5; 63 | popView.popViewCountDownBlock = ^(LSTPopView *popView, NSTimeInterval timeInterval) { 64 | view.timeLab.text = [NSString stringWithFormat:@"%.0lf",timeInterval]; 65 | }; 66 | 67 | [popView pop]; 68 | } 69 | 70 | #pragma mark - ***** LSTPopViewProtocol ***** 71 | 72 | /** 点击弹窗 回调 */ 73 | - (void)lst_PopViewBgClick { 74 | NSLog(@"点了弹窗"); 75 | 76 | } 77 | /** 长按弹窗 回调 */ 78 | - (void)lst_PopViewBgLongPress { 79 | NSLog(@"长按弹窗"); 80 | } 81 | 82 | 83 | // ****** 生命周期 ****** 84 | /** 将要显示 */ 85 | - (void)lst_PopViewWillPopForPopView:(LSTPopView *)popView { 86 | NSLog(@"将要显示"); 87 | } 88 | /** 已经显示完毕 */ 89 | - (void)lst_PopViewDidPopForPopView:(LSTPopView *)popView { 90 | NSLog(@"已经显示完毕"); 91 | } 92 | - (void)lst_PopViewCountDownForPopView:(LSTPopView *)popView forCountDown:(NSTimeInterval)timeInterval { 93 | NSLog(@"倒计时---%u",timeInterval); 94 | } 95 | - (void)lst_PopViewCountDownFinishForPopView:(LSTPopView *)popView { 96 | NSLog(@"倒计时完成"); 97 | } 98 | /** 将要开始移除 */ 99 | - (void)lst_PopViewWillDismissForPopView:(LSTPopView *)popView { 100 | NSLog(@"将要开始移除"); 101 | } 102 | /** 已经移除完毕 */ 103 | - (void)lst_PopViewDidDismissForPopView:(LSTPopView *)popView { 104 | NSLog(@"已经移除完毕"); 105 | } 106 | 107 | @end 108 | -------------------------------------------------------------------------------- /Example/LSTPopView/LSTPopView/窗口编队测试/LSTPopViewGroupTestView.xib: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | -------------------------------------------------------------------------------- /Example/LSTPopView/LSTAppDelegate.m: -------------------------------------------------------------------------------- 1 | // 2 | // LSTAppDelegate.m 3 | // LSTPopView 4 | // 5 | // Created by 490790096@qq.com on 03/06/2020. 6 | // Copyright (c) 2020 490790096@qq.com. All rights reserved. 7 | // 8 | 9 | #import "LSTAppDelegate.h" 10 | #import "LSTPopViewVC.h" 11 | #import 12 | #import "LSTLaunchMutiPopViewVC.h" 13 | #import 14 | 15 | @implementation LSTAppDelegate 16 | 17 | - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { 18 | 19 | 20 | [Bugly startWithAppId:@"a0b4f38d89"]; 21 | 22 | 23 | #ifdef DEBUG 24 | //测试开启调试log 25 | [LSTPopView setLogStyle:LSTPopViewLogStyleALL]; 26 | #else 27 | //正式关闭调试log 28 | [LSTPopView setLogStyle:LSTPopViewLogStyleNO]; 29 | #endif 30 | 31 | 32 | self.window = [[UIWindow alloc] initWithFrame:[UIScreen mainScreen].bounds]; 33 | LSTPopViewVC *vc = [[LSTPopViewVC alloc] init]; 34 | UINavigationController *nav = [[UINavigationController alloc] initWithRootViewController:vc]; 35 | self.window.rootViewController = nav; 36 | [self.window makeKeyAndVisible]; 37 | 38 | 39 | 40 | //以下是通过优先级机制 进行了弹窗的排序 逐个展示 41 | 42 | //打开闪屏ad 43 | // [LSTLaunchMutiPopViewVC appFlashAdPopView]; 44 | // //打开app新版本更新(模拟网络请求延时) 45 | // dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(0.5 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{ 46 | // [LSTLaunchMutiPopViewVC appUpdatePopView]; 47 | // }); 48 | // //打开app首页广告弹窗//打开app新版本更新(模拟网络请求延时) 49 | // dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(0.3 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{ 50 | // [LSTLaunchMutiPopViewVC appIndexAdPopView]; 51 | // }); 52 | // //打开推送弹窗 53 | // [LSTLaunchMutiPopViewVC appPushPopView]; 54 | return YES; 55 | } 56 | 57 | - (void)applicationWillResignActive:(UIApplication *)application 58 | { 59 | // Sent when the application is about to move from active to inactive state. This can occur for certain types of temporary interruptions (such as an incoming phone call or SMS message) or when the user quits the application and it begins the transition to the background state. 60 | // Use this method to pause ongoing tasks, disable timers, and throttle down OpenGL ES frame rates. Games should use this method to pause the game. 61 | } 62 | 63 | - (void)applicationDidEnterBackground:(UIApplication *)application 64 | { 65 | // Use this method to release shared resources, save user data, invalidate timers, and store enough application state information to restore your application to its current state in case it is terminated later. 66 | // If your application supports background execution, this method is called instead of applicationWillTerminate: when the user quits. 67 | } 68 | 69 | - (void)applicationWillEnterForeground:(UIApplication *)application 70 | { 71 | // Called as part of the transition from the background to the inactive state; here you can undo many of the changes made on entering the background. 72 | } 73 | 74 | - (void)applicationDidBecomeActive:(UIApplication *)application 75 | { 76 | // Restart any tasks that were paused (or not yet started) while the application was inactive. If the application was previously in the background, optionally refresh the user interface. 77 | } 78 | 79 | - (void)applicationWillTerminate:(UIApplication *)application 80 | { 81 | // Called when the application is about to terminate. Save data if appropriate. See also applicationDidEnterBackground:. 82 | } 83 | 84 | @end 85 | -------------------------------------------------------------------------------- /Example/LSTPopView/LSTPopView/app启动多窗口实例/LSTLaunchMutiPopViewVC.xib: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | -------------------------------------------------------------------------------- /Example/LSTPopView/LSTPopView/常用示例demo/列表类型展示/CollectionView/LSTPopViewListBuyView.xib: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | -------------------------------------------------------------------------------- /Example/LSTPopView/LSTPopView/窗口优先级/LSTPopViewPriorityVC.xib: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 30 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | -------------------------------------------------------------------------------- /LSTPopView/Classes/Code/UIView+LSTPV.m: -------------------------------------------------------------------------------- 1 | // 2 | // UIView+LSTPV.m 3 | // LSTPopView 4 | // 5 | // Created by LoSenTrad on 2020/11/30. 6 | // 7 | 8 | #import "UIView+LSTPV.h" 9 | 10 | @implementation UIView (LSTPV) 11 | 12 | 13 | - (void)setPv_X:(CGFloat)pv_X { 14 | CGRect frame = self.frame; 15 | frame.origin.x = pv_X; 16 | self.frame = frame; 17 | } 18 | 19 | - (CGFloat)pv_X { 20 | return self.frame.origin.x; 21 | } 22 | 23 | - (void)setPv_Y:(CGFloat)pv_Y { 24 | CGRect frame = self.frame; 25 | frame.origin.y = pv_Y; 26 | self.frame = frame; 27 | } 28 | 29 | - (CGFloat)pv_Y { 30 | return self.frame.origin.y; 31 | } 32 | 33 | - (void)setPv_Width:(CGFloat)pv_Width { 34 | CGRect frame = self.frame; 35 | frame.size.width = pv_Width; 36 | self.frame = frame; 37 | } 38 | 39 | - (CGFloat)pv_Width { 40 | return self.frame.size.width; 41 | } 42 | 43 | - (void)setPv_Height:(CGFloat)pv_Height { 44 | CGRect frame = self.frame; 45 | frame.size.height = pv_Height; 46 | self.frame = frame; 47 | } 48 | 49 | - (CGFloat)pv_Height { 50 | return self.frame.size.height; 51 | } 52 | 53 | - (void)setPv_Size:(CGSize)pv_Size { 54 | CGRect frame = self.frame; 55 | frame.size = pv_Size; 56 | self.frame = frame; 57 | } 58 | 59 | - (CGSize)pv_Size { 60 | return self.frame.size; 61 | } 62 | 63 | - (void)setPv_CenterX:(CGFloat)pv_CenterX { 64 | CGPoint center = self.center; 65 | center.x = pv_CenterX; 66 | self.center = center; 67 | } 68 | 69 | - (CGFloat)pv_CenterX { 70 | return self.center.x; 71 | } 72 | 73 | - (void)setPv_CenterY:(CGFloat)pv_CenterY { 74 | CGPoint center = self.center; 75 | center.y = pv_CenterY; 76 | self.center = center; 77 | } 78 | 79 | - (CGFloat)pv_CenterY { 80 | return self.center.y; 81 | } 82 | 83 | - (void)setPv_Top:(CGFloat)pv_Top { 84 | CGRect newframe = self.frame; 85 | newframe.origin.y = pv_Top; 86 | self.frame = newframe; 87 | } 88 | 89 | - (CGFloat)pv_Top { 90 | return self.frame.origin.y; 91 | } 92 | 93 | - (void)setPv_Left:(CGFloat)pv_Left { 94 | CGRect newframe = self.frame; 95 | newframe.origin.x = pv_Left; 96 | self.frame = newframe; 97 | } 98 | 99 | - (CGFloat)pv_Left { 100 | return self.frame.origin.x; 101 | } 102 | 103 | - (void)setPv_Bottom:(CGFloat)pv_Bottom { 104 | CGRect newframe = self.frame; 105 | newframe.origin.y = pv_Bottom - self.frame.size.height; 106 | self.frame = newframe; 107 | } 108 | 109 | - (CGFloat)pv_Bottom { 110 | return self.frame.origin.y + self.frame.size.height; 111 | } 112 | 113 | - (void)setPv_Right:(CGFloat)pv_Right { 114 | CGFloat delta = pv_Right - (self.frame.origin.x + self.frame.size.width); 115 | CGRect newframe = self.frame; 116 | newframe.origin.x += delta ; 117 | self.frame = newframe; 118 | } 119 | 120 | - (CGFloat)pv_Right { 121 | return self.frame.origin.x + self.frame.size.width; 122 | } 123 | 124 | /** 是否是苹果X系列(刘海屏系列) */ 125 | BOOL pv_IsIphoneX_ALL(void) { 126 | BOOL isPhoneX = NO; 127 | if (@available(iOS 11.0, *)) { 128 | isPhoneX = [[UIApplication sharedApplication] delegate].window.safeAreaInsets.bottom > 0.0; 129 | } 130 | return isPhoneX; 131 | } 132 | 133 | CGSize pv_ScreenSize(void) { 134 | CGSize size = [UIScreen mainScreen].bounds.size; 135 | return size; 136 | } 137 | 138 | CGFloat pv_ScreenWidth(void) { 139 | CGSize size = [UIScreen mainScreen].bounds.size; 140 | return size.width; 141 | } 142 | 143 | CGFloat pv_ScreenHeight(void) { 144 | CGSize size = [UIScreen mainScreen].bounds.size; 145 | return size.height; 146 | } 147 | 148 | @end 149 | -------------------------------------------------------------------------------- /Example/LSTPopView/LSTPopView/生命周期(多代理)/LSTLifeCycleView.m: -------------------------------------------------------------------------------- 1 | // 2 | // LSTLifeCycleView.m 3 | // LSTPopView_Example 4 | // 5 | // Created by LoSenTrad on 2020/6/6. 6 | // Copyright © 2020 490790096@qq.com. All rights reserved. 7 | // 8 | 9 | #import "LSTLifeCycleView.h" 10 | #import 11 | #import 12 | 13 | @interface LSTLifeCycleView () 14 | 15 | /** <#.....#> */ 16 | @property (nonatomic,strong) UIImageView *shareImgView; 17 | /** <#.....#> */ 18 | @property (nonatomic,strong) UIImageView *imgView; 19 | 20 | @end 21 | 22 | @implementation LSTLifeCycleView 23 | 24 | #pragma mark - ***** 初始化 ***** 25 | 26 | - (instancetype)initWithFrame:(CGRect)frame { 27 | if (self = [super initWithFrame:frame]) { 28 | [self initSubViews]; 29 | } 30 | return self; 31 | } 32 | 33 | #pragma mark - ***** setter 设置器/数据处理 ***** 34 | 35 | 36 | #pragma mark - ***** setupUI 界面布局 ***** 37 | 38 | - (void)initSubViews { 39 | 40 | [self addSubview:self.imgView]; 41 | 42 | [self addSubview:self.timeLab]; 43 | 44 | } 45 | 46 | - (void)layoutSubviews { 47 | [super layoutSubviews]; 48 | 49 | 50 | [_imgView mas_makeConstraints:^(MASConstraintMaker *make) { 51 | make.top.left.bottom.right.equalTo(self); 52 | }]; 53 | 54 | [_timeLab mas_makeConstraints:^(MASConstraintMaker *make) { 55 | make.top.equalTo(self).offset(15); 56 | make.left.equalTo(self).offset(15); 57 | }]; 58 | 59 | } 60 | 61 | #pragma mark - ***** other 其他 ***** 62 | 63 | 64 | #pragma mark - ***** LSTPopViewProtocol ***** 65 | /** 点击弹窗 回调 */ 66 | - (void)lst_PopViewBgClick { 67 | NSLog(@"点了弹窗"); 68 | 69 | } 70 | /** 长按弹窗 回调 */ 71 | - (void)lst_PopViewBgLongPress { 72 | NSLog(@"长按弹窗"); 73 | } 74 | 75 | 76 | // ****** 生命周期 ****** 77 | /** 将要显示 */ 78 | - (void)lst_PopViewWillPopForPopView:(LSTPopView *)popView { 79 | NSLog(@"将要显示"); 80 | } 81 | /** 已经显示完毕 */ 82 | - (void)lst_PopViewDidPopForPopView:(LSTPopView *)popView { 83 | NSLog(@"已经显示完毕"); 84 | } 85 | - (void)lst_PopViewCountDownForPopView:(LSTPopView *)popView forCountDown:(NSTimeInterval)timeInterval { 86 | NSLog(@"倒计时---%u",timeInterval); 87 | } 88 | - (void)lst_PopViewCountDownFinishForPopView:(LSTPopView *)popView { 89 | NSLog(@"倒计时完成"); 90 | } 91 | /** 将要开始移除 */ 92 | - (void)lst_PopViewWillDismissForPopView:(LSTPopView *)popView { 93 | NSLog(@"将要开始移除"); 94 | } 95 | /** 已经移除完毕 */ 96 | - (void)lst_PopViewDidDismissForPopView:(LSTPopView *)popView { 97 | NSLog(@"已经移除完毕"); 98 | } 99 | 100 | #pragma mark - ***** Lazy Loading 懒加载 ***** 101 | 102 | 103 | - (UIImageView *)shareImgView { 104 | if(_shareImgView) return _shareImgView; 105 | _shareImgView = [UIImageView new]; 106 | _shareImgView.image = [UIImage imageNamed:@"lst_logo"]; 107 | _shareImgView.backgroundColor = UIColor.yellowColor; 108 | _shareImgView.layer.cornerRadius = 10; 109 | _shareImgView.layer.masksToBounds = YES; 110 | return _shareImgView; 111 | } 112 | 113 | - (UIImageView *)imgView { 114 | if(_imgView) return _imgView; 115 | _imgView = [[UIImageView alloc] init]; 116 | _imgView.image = [UIImage imageNamed:@"lst_logo"]; 117 | _imgView.layer.cornerRadius = 5; 118 | _imgView.layer.masksToBounds = YES; 119 | _imgView.contentMode = UIViewContentModeScaleAspectFill; 120 | // _imgView.alpha = 0.0; 121 | return _imgView; 122 | } 123 | 124 | - (UILabel *)timeLab { 125 | if(_timeLab) return _timeLab; 126 | _timeLab = [[UILabel alloc] init]; 127 | _timeLab.textColor = UIColor.whiteColor; 128 | _timeLab.font = [UIFont systemFontOfSize:50]; 129 | return _timeLab; 130 | } 131 | 132 | @end 133 | -------------------------------------------------------------------------------- /Example/LSTPopView/LSTPopView/常用示例demo/QQ音乐顶部/LSTPopViewQQView.xib: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | -------------------------------------------------------------------------------- /Example/LSTPopView/LSTPopView/定时器调试/LSTPopViewTimerView.xib: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | -------------------------------------------------------------------------------- /Example/LSTPopView.xcodeproj/xcshareddata/xcschemes/LSTPopView-Example.xcscheme: -------------------------------------------------------------------------------- 1 | 2 | 5 | 8 | 9 | 15 | 21 | 22 | 23 | 24 | 25 | 30 | 31 | 37 | 38 | 39 | 40 | 42 | 48 | 49 | 50 | 51 | 52 | 62 | 64 | 70 | 71 | 72 | 73 | 77 | 78 | 79 | 80 | 86 | 88 | 94 | 95 | 96 | 97 | 99 | 100 | 103 | 104 | 105 | -------------------------------------------------------------------------------- /Example/LSTPopView/LSTPopView/app启动多窗口实例/闪屏广告/LSTAppFlashAdView.xib: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | -------------------------------------------------------------------------------- /Example/LSTPopView/LSTPopView/拖拽轻扫手势示例/LSTPopViewDragVC.m: -------------------------------------------------------------------------------- 1 | // 2 | // LSTPopViewDragVC.m 3 | // LSTPopView_Example 4 | // 5 | // Created by LoSenTrad on 2021/2/25. 6 | // Copyright © 2021 490790096@qq.com. All rights reserved. 7 | // 8 | 9 | #import "LSTPopViewDragVC.h" 10 | #import "LSTPopViewTVView.h" 11 | 12 | @interface LSTPopViewDragVC () 13 | < 14 | UITableViewDelegate, 15 | UITableViewDataSource 16 | > 17 | 18 | /** <#.....#> */ 19 | @property (nonatomic,strong) UITableView *tableView; 20 | 21 | @end 22 | 23 | @implementation LSTPopViewDragVC 24 | 25 | #pragma mark - ***** Controller Life Cycle 控制器生命周期 ***** 26 | 27 | - (void)viewDidLoad { 28 | [super viewDidLoad]; 29 | 30 | 31 | [self layoutSubViewUI]; 32 | 33 | 34 | } 35 | 36 | 37 | 38 | #pragma mark - ***** setupUI 界面布局 ***** 39 | 40 | - (void)layoutSubViewUI { 41 | 42 | self.title = @"拖拽轻扫手势示例"; 43 | 44 | self.tableView = [[UITableView alloc] init]; 45 | self.tableView.delegate = self; 46 | self.tableView.dataSource = self; 47 | [self.tableView registerClass:[UITableViewCell class] forCellReuseIdentifier:@"cell"]; 48 | [self.view addSubview:self.tableView]; 49 | [_tableView mas_makeConstraints:^(MASConstraintMaker *make) { 50 | make.top.left.right.bottom.equalTo(self.view); 51 | }]; 52 | 53 | } 54 | 55 | #pragma mark - ***** Data Request 数据请求 ***** 56 | 57 | 58 | #pragma mark - ***** Other 其他 ***** 59 | 60 | - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { 61 | return 13; 62 | } 63 | 64 | - (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath { 65 | return 50; 66 | } 67 | 68 | - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { 69 | 70 | UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"cell"]; 71 | 72 | if (!cell) { 73 | cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:@"cell"]; 74 | } 75 | cell.selectionStyle = UITableViewCellSelectionStyleNone; 76 | cell.textLabel.font = [UIFont boldSystemFontOfSize:17]; 77 | switch (indexPath.row) { 78 | case 0: 79 | { 80 | cell.textLabel.text = @"底部拖拽轻扫移除"; 81 | } 82 | break; 83 | case 1: 84 | { 85 | cell.textLabel.text = @"顶部拖拽轻扫移除"; 86 | } 87 | break; 88 | case 2: 89 | { 90 | cell.textLabel.text = @"左侧边拖拽移除"; 91 | } 92 | break; 93 | case 3: 94 | { 95 | cell.textLabel.text = @"右侧边拖拽移除"; 96 | } 97 | break; 98 | case 4: 99 | { 100 | cell.textLabel.text = @"纯代码自定义view"; 101 | } 102 | break; 103 | case 5: 104 | { 105 | cell.textLabel.text = @"XIB自定义view"; 106 | } 107 | break; 108 | case 6: 109 | { 110 | cell.textLabel.text = @"多个popView窗口测试"; 111 | } 112 | break; 113 | case 7: 114 | { 115 | cell.textLabel.text = @"规避键盘遮挡调试"; 116 | } 117 | break; 118 | default: 119 | break; 120 | } 121 | return cell; 122 | 123 | } 124 | 125 | - (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { 126 | if (indexPath.row == 0) { 127 | LSTPopViewTVView *customView = [[LSTPopViewTVView alloc] initWithFrame:CGRectMake(0, 0, pv_ScreenWidth(), pv_ScreenHeight()*(0.8))]; 128 | LSTPopView *popView = [LSTPopView initWithCustomView:customView 129 | parentView:self.view 130 | popStyle:LSTPopStyleSmoothFromBottom 131 | dismissStyle:LSTDismissStyleSmoothToBottom]; 132 | // self.popView = popView; 133 | popView.priority = 1000; 134 | popView.hemStyle = LSTHemStyleBottom; 135 | popView.dragStyle = LSTDragStyleY_Positive; 136 | popView.dragDistance = customView.pv_Height*0.5; 137 | popView.sweepStyle = LSTSweepStyleY_Positive; 138 | popView.swipeVelocity = 1600; 139 | popView.sweepDismissStyle = LSTSweepDismissStyleSmooth; 140 | popView.isImpactFeedback = YES; 141 | 142 | [popView pop]; 143 | } 144 | } 145 | 146 | #pragma mark - ***** Lazy Loading 懒加载 ***** 147 | 148 | 149 | 150 | @end 151 | -------------------------------------------------------------------------------- /Example/LSTPopView/LSTPopView/定时器调试/LSTPopViewTimerTestVC.m: -------------------------------------------------------------------------------- 1 | // 2 | // LSTPopViewTimerTestVC.m 3 | // LSTPopView_Example 4 | // 5 | // Created by LoSenTrad on 2020/7/10. 6 | // Copyright © 2020 490790096@qq.com. All rights reserved. 7 | // 8 | 9 | #import "LSTPopViewTimerTestVC.h" 10 | #import 11 | #import "LSTPopViewTimerView.h" 12 | #import 13 | 14 | @interface LSTPopViewTimerTestVC () 15 | 16 | /** <#.....#> */ 17 | @property (nonatomic,strong) UIButton *btn; 18 | 19 | @end 20 | 21 | @implementation LSTPopViewTimerTestVC 22 | 23 | #pragma mark - ***** Controller Life Cycle 控制器生命周期 ***** 24 | 25 | - (void)viewDidLoad { 26 | [super viewDidLoad]; 27 | 28 | 29 | [self layoutSubViewUI]; 30 | [self btnAction]; 31 | } 32 | 33 | 34 | 35 | #pragma mark - ***** setupUI 界面布局 ***** 36 | 37 | - (void)layoutSubViewUI { 38 | 39 | self.view.backgroundColor = UIColor.whiteColor; 40 | 41 | [self.view addSubview:self.btn]; 42 | [_btn mas_makeConstraints:^(MASConstraintMaker *make) { 43 | make.size.mas_equalTo(CGSizeMake(100, 40)); 44 | make.center.equalTo(self.view); 45 | }]; 46 | 47 | 48 | 49 | } 50 | 51 | 52 | 53 | #pragma mark - ***** Data Request 数据请求 ***** 54 | 55 | 56 | #pragma mark - ***** Other 其他 ***** 57 | 58 | - (void)btnAction { 59 | UINib *nib = [UINib nibWithNibName:@"LSTPopViewTimerView" bundle:nil]; 60 | LSTPopViewTimerView *view = [nib instantiateWithOwner:nil options:nil].firstObject; 61 | view.layer.cornerRadius = 10; 62 | view.layer.masksToBounds = YES; 63 | 64 | 65 | LSTPopView *popView = [LSTPopView initWithCustomView:view popStyle:LSTPopStyleSmoothFromTop dismissStyle:LSTDismissStyleSmoothToBottom]; 66 | LSTPopViewWK(popView) 67 | LSTPopViewWK(self) 68 | popView.bgClickBlock = ^{ 69 | [wk_popView dismiss]; 70 | }; 71 | popView.popViewCountDownBlock = ^(LSTPopView * _Nonnull popView, NSTimeInterval timeInterval) { 72 | view.timeLab.text = [NSString stringWithFormat:@"%.0lf",timeInterval]; 73 | }; 74 | popView.showTime = 5; 75 | popView.popViewDidDismissBlock = ^{ 76 | [wk_self popView2]; 77 | }; 78 | [popView pop]; 79 | } 80 | 81 | - (void)popView2 { 82 | UINib *nib = [UINib nibWithNibName:@"LSTPopViewTimerView" bundle:nil]; 83 | LSTPopViewTimerView *view = [nib instantiateWithOwner:nil options:nil].firstObject; 84 | view.layer.cornerRadius = 10; 85 | view.layer.masksToBounds = YES; 86 | view.imgView.image = [UIImage imageNamed:@"美女2"]; 87 | 88 | LSTPopView *popView = [LSTPopView initWithCustomView:view popStyle:LSTPopStyleSmoothFromTop dismissStyle:LSTDismissStyleSmoothToBottom]; 89 | LSTPopViewWK(popView) 90 | LSTPopViewWK(self) 91 | popView.bgClickBlock = ^{ 92 | [wk_popView dismiss]; 93 | }; 94 | popView.popViewCountDownBlock = ^(LSTPopView * _Nonnull popView, NSTimeInterval timeInterval) { 95 | view.timeLab.text = [NSString stringWithFormat:@"%.0lf",timeInterval]; 96 | }; 97 | popView.showTime = 5; 98 | popView.popViewDidDismissBlock = ^{ 99 | [wk_self popView3]; 100 | }; 101 | [popView pop]; 102 | } 103 | 104 | - (void)popView3 { 105 | UINib *nib = [UINib nibWithNibName:@"LSTPopViewTimerView" bundle:nil]; 106 | LSTPopViewTimerView *view = [nib instantiateWithOwner:nil options:nil].firstObject; 107 | view.layer.cornerRadius = 10; 108 | view.layer.masksToBounds = YES; 109 | view.imgView.image = [UIImage imageNamed:@"美女3"]; 110 | 111 | 112 | LSTPopView *popView = [LSTPopView initWithCustomView:view popStyle:LSTPopStyleSmoothFromTop dismissStyle:LSTDismissStyleSmoothToBottom]; 113 | LSTPopViewWK(popView) 114 | popView.bgClickBlock = ^{ 115 | [wk_popView dismiss]; 116 | }; 117 | popView.popViewCountDownBlock = ^(LSTPopView * _Nonnull popView, NSTimeInterval timeInterval) { 118 | view.timeLab.text = [NSString stringWithFormat:@"%.0lf",timeInterval]; 119 | }; 120 | popView.showTime = 5; 121 | 122 | [popView pop]; 123 | } 124 | 125 | #pragma mark - ***** Lazy Loading 懒加载 ***** 126 | 127 | - (UIButton *)btn { 128 | if(_btn) return _btn; 129 | _btn = [[UIButton alloc] init]; 130 | [_btn setTitle:@"点击" forState:UIControlStateNormal]; 131 | [_btn setTitleColor:UIColor.whiteColor forState:UIControlStateNormal]; 132 | [_btn setBackgroundColor:UIColor.orangeColor]; 133 | [_btn addTarget:self action:@selector(btnAction) forControlEvents:UIControlEventTouchUpInside]; 134 | return _btn; 135 | } 136 | 137 | 138 | @end 139 | -------------------------------------------------------------------------------- /Example/LSTPopView/LSTPopView/常用示例demo/底部输入框/LSTPopViewBottomInputView.xib: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | --------------------------------------------------------------------------------