昨天集成這個FWPopupView的時候發(fā)現(xiàn)彈出框不彈出來,因?yàn)轫?xiàng)目里的彈出框是加載到自定義的FWPopupWindow上的,但是FWPopupWindow壓根沒初始化成功,(能彈出來才見鬼)
然后用低版本項(xiàng)目集成,一下子就成功了,所以猜想是windowScene的問題
專業(yè)術(shù)語咱也不會說,話不多說上代碼
前期準(zhǔn)備:
1.首先在你的xcode11 ios 13的環(huán)境下,新建一個xcode項(xiàng)目

image.png
xcode 11, ios 13 新建的項(xiàng)目結(jié)構(gòu)是下圖這樣:

image.png
2.打開終端用pod引入FWPopupView 和 IQKeyboardManagerSwift

image.png
3. 在pod里找到FWPopupWindow文件 并需要改兩處

image.png
@objc public class var sharedInstance: FWPopupWindow {
struct Static {
static let kbManager: FWPopupWindow = { () -> FWPopupWindow in
if #available(iOS 13.0, *) {
let windowScene = UIApplication.shared
.connectedScenes
.filter { $0.activationState == .foregroundActive }
.first
if let windowScene = windowScene as? UIWindowScene {
return FWPopupWindow(windowScene: windowScene)
}
}
return FWPopupWindow(frame: UIScreen.main.bounds)
}()
}
return Static.kbManager
}

image.png
public override init(frame: CGRect) {
super.init(frame: frame)
self.setup()
}
@available(iOS 13.0, *)
public override init(windowScene: UIWindowScene) {
if #available(iOS 13.0, *) {
super.init(windowScene: windowScene)
setup()
} else {
// Fallback on earlier versions
fatalError("")
}
}
func setup() {
let rootVC = FWPopupRootViewController()
rootVC.view.backgroundColor = UIColor.clear
self.rootViewController = rootVC
self.windowLevel = UIWindow.Level.statusBar + 1
let tapGest = UITapGestureRecognizer(target: self, action: #selector(tapGesClick(tap:)))
// tapGest.cancelsTouchesInView = false
tapGest.delegate = self
self.addGestureRecognizer(tapGest)
let panGest = UIPanGestureRecognizer(target: self, action: #selector(panGesClick(pan:)))
self.addGestureRecognizer(panGest)
}
4、項(xiàng)目兼容ios13

image.png
項(xiàng)目會報一堆錯

image.png
需要在函數(shù)前添加一行代碼
@available (iOS 13.0, *)

image.png
這里也會報錯 ,直接在類前添加 @available (iOS 13.0, *)

image.png

image.png
5.自定義根控制器

image.png
guard let windowScene = (scene as? UIWindowScene) else { return }
self.window = UIWindow (windowScene: windowScene)
self.window?.rootViewController = UINavigationController(rootViewController: ViewController())
self.window?.backgroundColor = UIColor.yellow
self.window?.makeKeyAndVisible()
6. 最后在根控制器里隨便寫一個例子調(diào)用一個彈框

image.png
//
// ViewController.swift
// PopViewTest
//
// Created by uu on 2019/11/14.
// Copyright ? 2019 UU. All rights reserved.
//
import UIKit
import FWPopupView
class ViewController: UIViewController {
lazy var alertImage: FWAlertView = {
let block2: FWPopupItemClickedBlock = { [weak self] (popupView, index, title) in
if index == 1 {
// 這邊演示了如何手動去調(diào)用隱藏
self?.alertImage.hide()
}
}
// 注意:此時“確定”按鈕是不讓按鈕自己隱藏的
let items = [FWPopupItem(title: "取消", itemType: .normal, isCancel: true, canAutoHide: true, itemClickedBlock: block2),
FWPopupItem(title: "確定", itemType: .normal, isCancel: false, canAutoHide: false, itemClickedBlock: block2)]
// 注意:添加自定義的視圖,需要設(shè)置確定的Frame值
let customImageView = UIImageView(image: UIImage(named: "audio_bgm_4"))
customImageView.frame = CGRect (x: 0, y: 0, width: 100, height: 100)
customImageView.backgroundColor = UIColor.blue
let vProperty = FWAlertViewProperty()
vProperty.touchWildToHide = "1"
let alertImage = FWAlertView.alert(title: "標(biāo)題", detail: "帶自定義視圖", inputPlaceholder: nil, keyboardType: .default, isSecureTextEntry: false, customView: customImageView, items: items, vProperty: vProperty)
return alertImage
}()
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view.
self.navigationItem.rightBarButtonItem = UIBarButtonItem (title: "點(diǎn)我吖", style: .done, target: self, action: #selector(onClickPop))
}
@objc func onClickPop() {
print(self.alertImage.frame)
self.alertImage.show()
print(self.alertImage.frame)
}
}
成功在xcode 11, ios 13 上集成~~~~
注意?。。。。。?!最主要的步驟是3
不懂的私信 溜了溜了