1.BaseAlertVC
import UIKit
class BaseAlertVC: GLBaseViewController {
let centerView = UIView()
override func viewDidLoad() {
super.viewDidLoad()
view.backgroundColor = UIColor(displayP3Red: 0, green: 0, blue: 0, alpha: 0.3)
let tap = UITapGestureRecognizer.init(target: self, action: #selector(tapView))
tap.delegate = self
view.addGestureRecognizer(tap)
view.addSubview(centerView)
}
@objc func tapView() {
dismiss()
}
}
extension BaseAlertVC: UIGestureRecognizerDelegate {
func gestureRecognizer(_ gestureRecognizer: UIGestureRecognizer, shouldReceive touch: UITouch) -> Bool {
if (touch.view?.isDescendant(of: centerView))! {
return false;
}else{
return true;
}
}
}
2.BindFrameNumAlertVC
import UIKit
import XHToastSwift
class BindFrameNumAlertVC: BaseAlertVC,UITextFieldDelegate {
let textField = UITextField()
func textField(_ textField: UITextField, shouldChangeCharactersIn range: NSRange, replacementString string: String) -> Bool {
// Get the new text after the user enters or deletes characters
let newText = (textField.text as NSString?)?.replacingCharacters(in: range, with: string) ?? ""
// Limit the text field to 15 characters
return newText.count <= 15
}
override func viewDidLoad() {
super.viewDidLoad()
centerView.backgroundColor = .white
centerView.snp.makeConstraints { make in
make.width.equalTo(300)
make.height.equalTo(250)
make.center.equalToSuperview()
}
centerView.layer.cornerRadius = 10
let titleLabel = UILabel()
centerView.addSubview(titleLabel)
titleLabel.text = LocalizableManager.localValue("binding_frame_number")
titleLabel.snp.makeConstraints { make in
make.centerX.equalToSuperview()
make.top.equalToSuperview().offset(20)
}
textField.delegate = self
textField.backgroundColor = UIColor.rgbColor(red: 219, green: 219, blue: 219)
textField.keyboardType = .numberPad
textField.textAlignment = .center
centerView.addSubview(textField)
textField.snp.makeConstraints { make in
make.centerX.equalToSuperview()
make.width.equalTo(220)
make.height.equalTo(50)
make.top.equalTo(titleLabel.snp_bottom).offset(30)
}
textField.layer.cornerRadius = 10
//限制textField只能输入15个字符
let alertLabel = UILabel()
alertLabel.numberOfLines = 0
alertLabel.font = UIFont(name: "PingFang SC", size: 13)
alertLabel.textColor = .gray
alertLabel.text = LocalizableManager.localValue("input_corresponding_code")
centerView.addSubview(alertLabel)
alertLabel.snp.makeConstraints { make in
make.top.equalTo(textField.snp_bottom).offset(10)
make.left.equalTo(textField).offset(10)
make.right.equalTo(textField)
}
let sureBtn = UIButton()
sureBtn.backgroundColor = UIColor.rgbColor(red: 219, green: 219, blue: 219)
sureBtn.setTitleColor(.black, for: .normal)
sureBtn.addTarget(self, action: #selector(sureBtnClick), for: .touchUpInside)
sureBtn.setTitle(LocalizableManager.localValue("sure"), for: .normal)
centerView.addSubview(sureBtn)
sureBtn.snp.makeConstraints { make in
make.left.equalToSuperview().offset(30)
make.bottom.equalToSuperview().offset(-20)
make.width.equalTo(100)
make.height.equalTo(40)
}
sureBtn.layer.cornerRadius = 20
let cancelBtn = UIButton()
cancelBtn.backgroundColor = newUIYellow
cancelBtn.addTarget(self, action: #selector(cancelBtnClick), for: .touchUpInside)
cancelBtn.setTitle(LocalizableManager.localValue("cancel"), for: .normal)
centerView.addSubview(cancelBtn)
cancelBtn.snp.makeConstraints { make in
make.right.equalToSuperview().offset(-30)
make.bottom.equalToSuperview().offset(-20)
make.width.equalTo(100)
make.height.equalTo(40)
}
cancelBtn.layer.cornerRadius = 20
}
@objc func sureBtnClick(){
print(textField.text)
guard let str = textField.text,str.count == 15 else {
XHToast.showBottomWithText(LocalizableManager.localValue("input_only_six_num"))
return
}
}
@objc func cancelBtnClick(){
}
}
文章来源地址https://www.toymoban.com/news/detail-639129.html
文章来源:https://www.toymoban.com/news/detail-639129.html
到了这里,关于ios swift alert 自定义弹框 点击半透明部分弹框消失的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!