Commit 87ebbda7 authored by CZ1004's avatar CZ1004

【优化】弹窗动画添加

parent fe2407d7
...@@ -48,6 +48,7 @@ class AdvTipDeleteView : UIView { ...@@ -48,6 +48,7 @@ class AdvTipDeleteView : UIView {
private var heightConstraint: Constraint? private var heightConstraint: Constraint?
private var centerYConstraint: Constraint?
...@@ -147,7 +148,8 @@ class AdvTipDeleteView : UIView { ...@@ -147,7 +148,8 @@ class AdvTipDeleteView : UIView {
self.tipView.snp.makeConstraints { make in self.tipView.snp.makeConstraints { make in
make.center.equalToSuperview() make.centerX.equalToSuperview()
centerYConstraint = make.centerY.equalToSuperview().offset(self.height + 205).constraint
make.width.equalTo(345) make.width.equalTo(345)
heightConstraint = make.height.equalTo(410).constraint heightConstraint = make.height.equalTo(410).constraint
} }
...@@ -187,6 +189,7 @@ class AdvTipDeleteView : UIView { ...@@ -187,6 +189,7 @@ class AdvTipDeleteView : UIView {
make.height.equalTo(48) make.height.equalTo(48)
make.centerX.equalToSuperview() make.centerX.equalToSuperview()
} }
} }
required init?(coder: NSCoder) { required init?(coder: NSCoder) {
fatalError("init(coder:) has not been implemented") fatalError("init(coder:) has not been implemented")
...@@ -262,9 +265,15 @@ extension AdvTipDeleteView : UICollectionViewDataSource, UICollectionViewDelegat ...@@ -262,9 +265,15 @@ extension AdvTipDeleteView : UICollectionViewDataSource, UICollectionViewDelegat
self.deleteLessButton.isHidden = true self.deleteLessButton.isHidden = true
self.heightConstraint?.update(offset: 360) self.heightConstraint?.update(offset: 360)
} }
// 强制重新布局
self.setNeedsLayout() // 先显示背景,然后延迟显示弹框
self.layoutIfNeeded() DispatchQueue.main.asyncAfter(deadline: .now() + 0.1) {
UIView.animate(withDuration: 0.1) {
// 更新约束
self.centerYConstraint?.update(offset: 0)
self.layoutIfNeeded()
}
}
} }
} }
......
...@@ -6,6 +6,7 @@ ...@@ -6,6 +6,7 @@
// //
import Foundation import Foundation
import SnapKit
enum TipSelectType { enum TipSelectType {
case selectTypeCompressVideo case selectTypeCompressVideo
...@@ -41,7 +42,7 @@ class AdvTipSelectView : UIView { ...@@ -41,7 +42,7 @@ class AdvTipSelectView : UIView {
var tipSelectModel : AdvTipSelectModel? var tipSelectModel : AdvTipSelectModel?
private var centerYConstraint: Constraint?
lazy var tipView : UIView = { lazy var tipView : UIView = {
...@@ -138,9 +139,10 @@ class AdvTipSelectView : UIView { ...@@ -138,9 +139,10 @@ class AdvTipSelectView : UIView {
self.tipView.snp.makeConstraints { make in self.tipView.snp.makeConstraints { make in
make.center.equalToSuperview() make.centerX.equalToSuperview()
make.width.equalTo(345) make.width.equalTo(345)
make.height.equalTo(432) make.height.equalTo(432)
centerYConstraint = make.centerY.equalToSuperview().offset(self.height + 220).constraint
} }
self.closeButton.snp.makeConstraints { make in self.closeButton.snp.makeConstraints { make in
...@@ -180,6 +182,15 @@ class AdvTipSelectView : UIView { ...@@ -180,6 +182,15 @@ class AdvTipSelectView : UIView {
make.height.equalTo(48) make.height.equalTo(48)
make.centerX.equalToSuperview() make.centerX.equalToSuperview()
} }
// 先显示背景,然后延迟显示弹框
DispatchQueue.main.asyncAfter(deadline: .now() + 0.1) {
UIView.animate(withDuration: 0.1) {
// 更新约束
self.centerYConstraint?.update(offset: 0)
self.layoutIfNeeded()
}
}
} }
} }
......
...@@ -6,44 +6,44 @@ ...@@ -6,44 +6,44 @@
// //
import Foundation import Foundation
import UIKit
import SnapKit
class CompressSortView : UIView,UITableViewDelegate,UITableViewDataSource { class CompressSortView: UIView, UITableViewDelegate, UITableViewDataSource {
var currentIndex : Int = 0
let tableData :[String] = ["Largest","Smallest","Newest","Oldest"]
var currentIndex: Int = 0
let tableData: [String] = ["Largest", "Smallest", "Newest", "Oldest"]
var callBack : callBack<Any> = {sortType in} var callBack : callBack<Any> = {sortType in}
private var selectedViewBottomConstraint: Constraint?
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int { func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return tableData.count return tableData.count
} }
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell : CompressSortCell = tableView.dequeueReusableCell(withIdentifier: "CompressSortCell",for: indexPath) as! CompressSortCell let cell: CompressSortCell = tableView.dequeueReusableCell(withIdentifier: "CompressSortCell", for: indexPath) as! CompressSortCell
cell.cellTag = indexPath.row cell.cellTag = indexPath.row
cell.selectButton.setTitle(tableData[indexPath.row], for: .normal) cell.selectButton.setTitle(tableData[indexPath.row], for: .normal)
cell.callBack = {[weak self] cellTag in cell.callBack = { [weak self] cellTag in
guard let self else {return} guard let self = self else { return }
self.currentIndex = cellTag as! Int self.currentIndex = cellTag as! Int
self.tableView.reloadData() self.tableView.reloadData()
} }
if indexPath.row == currentIndex { if indexPath.row == currentIndex {
cell.selectButton.layer.borderWidth = 1.0 cell.selectButton.layer.borderWidth = 1.0
cell.selectButton.setTitleColor(UIColor(red: 0, green: 0.51, blue: 1, alpha: 1), for: .normal) cell.selectButton.setTitleColor(UIColor(red: 0, green: 0.51, blue: 1, alpha: 1), for: .normal)
}else{ } else {
cell.selectButton.layer.borderWidth = 0 cell.selectButton.layer.borderWidth = 0
cell.selectButton.setTitleColor(UIColor(red: 0.2, green: 0.2, blue: 0.2, alpha: 1), for: .normal) cell.selectButton.setTitleColor(UIColor(red: 0.2, green: 0.2, blue: 0.2, alpha: 1), for: .normal)
} }
return cell return cell
} }
func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat { func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat {
return 48 * RScreenW() return 48 * RScreenW()
} }
override init(frame: CGRect) { override init(frame: CGRect) {
super.init(frame: frame) super.init(frame: frame)
self.addSubview(self.backView) self.addSubview(self.backView)
...@@ -58,21 +58,26 @@ class CompressSortView : UIView,UITableViewDelegate,UITableViewDataSource { ...@@ -58,21 +58,26 @@ class CompressSortView : UIView,UITableViewDelegate,UITableViewDataSource {
} }
self.selectedView.snp.makeConstraints { make in self.selectedView.snp.makeConstraints { make in
make.left.right.bottom.equalToSuperview() make.left.right.equalToSuperview()
make.height.equalTo(416) make.height.equalTo(416)
// 初始时将 selectedView 移到屏幕下方
self.selectedViewBottomConstraint = make.bottom.equalToSuperview().offset(416).constraint
} }
self.lineView.snp.makeConstraints { make in self.lineView.snp.makeConstraints { make in
make.top.equalToSuperview().offset(16) make.top.equalToSuperview().offset(16)
make.width.equalTo(57) make.width.equalTo(57)
make.height.equalTo(4) make.height.equalTo(4)
make.centerX.equalToSuperview() make.centerX.equalToSuperview()
} }
self.titleLabel.snp.makeConstraints { make in self.titleLabel.snp.makeConstraints { make in
make.left.equalToSuperview().offset(15) make.left.equalToSuperview().offset(15)
make.right.equalToSuperview().offset(-15) make.right.equalToSuperview().offset(-15)
make.top.equalTo(self.lineView.snp.bottom).offset(20) make.top.equalTo(self.lineView.snp.bottom).offset(20)
make.height.equalTo(20) make.height.equalTo(20)
} }
self.tableView.snp.makeConstraints { make in self.tableView.snp.makeConstraints { make in
make.left.equalToSuperview().offset(15) make.left.equalToSuperview().offset(15)
make.right.equalToSuperview().offset(-15) make.right.equalToSuperview().offset(-15)
...@@ -80,7 +85,6 @@ class CompressSortView : UIView,UITableViewDelegate,UITableViewDataSource { ...@@ -80,7 +85,6 @@ class CompressSortView : UIView,UITableViewDelegate,UITableViewDataSource {
make.height.equalTo(240) make.height.equalTo(240)
} }
self.applyButton.snp.makeConstraints { make in self.applyButton.snp.makeConstraints { make in
make.left.equalToSuperview().offset(15) make.left.equalToSuperview().offset(15)
make.right.equalToSuperview().offset(-15) make.right.equalToSuperview().offset(-15)
...@@ -88,37 +92,43 @@ class CompressSortView : UIView,UITableViewDelegate,UITableViewDataSource { ...@@ -88,37 +92,43 @@ class CompressSortView : UIView,UITableViewDelegate,UITableViewDataSource {
make.bottom.equalToSuperview().offset(-46) make.bottom.equalToSuperview().offset(-46)
} }
// 先显示背景,然后延迟显示弹框
DispatchQueue.main.asyncAfter(deadline: .now() + 0.1) {
UIView.animate(withDuration: 0.1) {
// 更新约束
self.selectedViewBottomConstraint?.update(offset: 0)
self.layoutIfNeeded()
}
}
} }
required init?(coder: NSCoder) { required init?(coder: NSCoder) {
fatalError("init(coder:) has not been implemented") fatalError("init(coder:) has not been implemented")
} }
lazy var backView : UIView = { lazy var backView: UIView = {
let view = UIView() let view = UIView()
view.backgroundColor = UIColor(red: 0, green: 0, blue: 0, alpha: 0.5000) view.backgroundColor = UIColor(red: 0, green: 0, blue: 0, alpha: 0.5000)
view.isUserInteractionEnabled = true view.isUserInteractionEnabled = true
let tap = UITapGestureRecognizer() let tap = UITapGestureRecognizer()
tap.addTarget(self, action: #selector(backViewClick)) tap.addTarget(self, action: #selector(backViewClick))
view.addGestureRecognizer(tap) view.addGestureRecognizer(tap)
return view return view
}() }()
lazy var selectedView : UIView = { lazy var selectedView: UIView = {
let view = UIView() let view = UIView()
view.backgroundColor = .white view.backgroundColor = .white
return view return view
}() }()
lazy var lineView : UIView = { lazy var lineView: UIView = {
let view = UIView() let view = UIView()
view.backgroundColor = UIColor(red: 0.85, green: 0.85, blue: 0.85, alpha: 1) view.backgroundColor = UIColor(red: 0.85, green: 0.85, blue: 0.85, alpha: 1)
return view return view
}() }()
lazy var titleLabel : UILabel = {
lazy var titleLabel: UILabel = {
let view = UILabel() let view = UILabel()
view.text = "Sort by" view.text = "Sort by"
view.textAlignment = .left view.textAlignment = .left
...@@ -127,7 +137,7 @@ class CompressSortView : UIView,UITableViewDelegate,UITableViewDataSource { ...@@ -127,7 +137,7 @@ class CompressSortView : UIView,UITableViewDelegate,UITableViewDataSource {
return view return view
}() }()
lazy var tableView : UITableView = { lazy var tableView: UITableView = {
let view = UITableView() let view = UITableView()
view.register(CompressSortCell.classForCoder(), forCellReuseIdentifier: "CompressSortCell") view.register(CompressSortCell.classForCoder(), forCellReuseIdentifier: "CompressSortCell")
view.backgroundColor = .clear view.backgroundColor = .clear
...@@ -142,7 +152,7 @@ class CompressSortView : UIView,UITableViewDelegate,UITableViewDataSource { ...@@ -142,7 +152,7 @@ class CompressSortView : UIView,UITableViewDelegate,UITableViewDataSource {
return view return view
}() }()
lazy var applyButton : UIButton = { lazy var applyButton: UIButton = {
let view = UIButton(type: .custom) let view = UIButton(type: .custom)
view.setTitle("Apply", for: .normal) view.setTitle("Apply", for: .normal)
view.layer.cornerRadius = 8 view.layer.cornerRadius = 8
...@@ -153,14 +163,14 @@ class CompressSortView : UIView,UITableViewDelegate,UITableViewDataSource { ...@@ -153,14 +163,14 @@ class CompressSortView : UIView,UITableViewDelegate,UITableViewDataSource {
return view return view
}() }()
@objc func applyAction() {
@objc func applyAction(){
// 传给上层控制器,对照片进行排序 // 传给上层控制器,对照片进行排序
callBack(currentIndex) callBack(currentIndex)
// 移除自身 // 移除自身
self.removeFromSuperview() self.removeFromSuperview()
} }
@objc func backViewClick(){
@objc func backViewClick() {
// 移除自身 // 移除自身
self.removeFromSuperview() self.removeFromSuperview()
} }
......
...@@ -37,7 +37,7 @@ class SecretViewController: BaseViewController { ...@@ -37,7 +37,7 @@ class SecretViewController: BaseViewController {
} }
} }
let AddAction = SecretActionView() var AddAction = SecretActionView()
var dataSource:[String] = [] { var dataSource:[String] = [] {
didSet { didSet {
...@@ -242,12 +242,14 @@ class SecretViewController: BaseViewController { ...@@ -242,12 +242,14 @@ class SecretViewController: BaseViewController {
// 添加的时候需要先弹出广告 // 添加的时候需要先弹出广告
popAdverTisement() popAdverTisement()
AdvManager.shared.finisedCallBack = { AdvManager.shared.finisedCallBack = {
self.AddAction = SecretActionView()
self.AddAction.show(); self.AddAction.show();
self.AddAction.callback = { idx in self.AddAction.callback = { idx in
self.AddImagePicker(idx) self.AddImagePicker(idx)
} }
} }
}else { }else {
self.AddAction = SecretActionView()
self.AddAction.show(); self.AddAction.show();
self.AddAction.callback = { idx in self.AddAction.callback = { idx in
self.AddImagePicker(idx) self.AddImagePicker(idx)
......
...@@ -6,20 +6,35 @@ ...@@ -6,20 +6,35 @@
// //
import UIKit import UIKit
import SnapKit
class SecretActionView: UIViewController { class SecretActionView: UIViewController {
private var selectedViewBottomConstraint: Constraint?
override func viewDidLoad() { override func viewDidLoad() {
super.viewDidLoad() super.viewDidLoad()
view.backgroundColor = .colorWithHex(hexStr: "#000000", alpha: 0.5) view.backgroundColor = .colorWithHex(hexStr: "#000000", alpha: 0.5)
setUI() setUI()
addTapAction()
}
/// 添加背景点击消失
func addTapAction(){
self.view.isUserInteractionEnabled = true
let tap = UITapGestureRecognizer()
tap.addTarget(self, action: #selector(touchDismiss))
self.view.addGestureRecognizer(tap)
} }
private func setUI() -> Void { private func setUI() -> Void {
view.addSubview(backView) view.addSubview(backView)
backView.snp.makeConstraints { make in backView.snp.makeConstraints { make in
make.left.right.equalToSuperview() make.left.right.equalToSuperview()
make.bottom.equalTo(view.snp.bottom) // 初始时将 selectedView 移到屏幕下方
self.selectedViewBottomConstraint = make.bottom.equalToSuperview().offset(1000).constraint
} }
lineV.snp.makeConstraints { make in lineV.snp.makeConstraints { make in
make.top.equalToSuperview().offset(16) make.top.equalToSuperview().offset(16)
...@@ -50,6 +65,16 @@ class SecretActionView: UIViewController { ...@@ -50,6 +65,16 @@ class SecretActionView: UIViewController {
view.layoutIfNeeded() view.layoutIfNeeded()
backView.cornerCut(radius: 20, corner: [.topLeft,.topRight]) backView.cornerCut(radius: 20, corner: [.topLeft,.topRight])
// 先显示背景,然后延迟显示弹框
DispatchQueue.main.asyncAfter(deadline: .now() + 0.1) {
UIView.animate(withDuration: 0.1) {
// 更新约束
self.selectedViewBottomConstraint?.update(offset: 0)
self.view.layoutIfNeeded()
}
}
} }
var callback:((_ idx:Int)->Void)? var callback:((_ idx:Int)->Void)?
...@@ -63,6 +88,10 @@ class SecretActionView: UIViewController { ...@@ -63,6 +88,10 @@ class SecretActionView: UIViewController {
} }
@objc private func touchDismiss(){
self.dismiss(animated: true)
}
func show() -> Void { func show() -> Void {
guard let rt = cWindow?.rootViewController else { return } guard let rt = cWindow?.rootViewController else { return }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment