├── 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 |
--------------------------------------------------------------------------------