GCModalAlert is a simple modal alert manager for iOS. It contains the following features:
- Auto manage custom alert views(Just add to manager
GCModalManager.defaultManager.add(alert)
). - Plenty of custom configs(See ModalableConfig).
To run the example project, clone the repo, and run pod install
from the Example directory first.
GCModalAlert is available through CocoaPods. To install it, simply add the following line to your Podfile:
pod 'GCModalAlert'
step 1. Create a custom view inherited from GCBaseModalAlert or a custom object implements Modalable.
class BottomPushModal: GCBaseModalAlert {
private let tableView: UITableView = UITableView(frame: .zero, style: .plain)
private let titleLabel: UILabel = UILabel()
private let labelHeight: CGFloat = 44.0
private let foods = ["Apple", "Orange", "Banana", "Pineapple", "Rice", "Beaf", "KFC", "Snacks"]
var selectedBlock: ((String) -> Void)?
override init(frame: CGRect = .zero, lifecycle: ModalableLifecycle = ModalableLifecycle()) {
super.init(frame: frame, lifecycle: lifecycle)
setupViews()
var config = ModalableConfig()
config.showAnimationType = .B2T
config.dismissAnimationType = .T2B
config.cancelWhileTapBackground = true
modalViewConfig = config
}
required init?(coder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}
private func setupViews() {
titleLabel.font = .systemFont(ofSize: 18, weight: .semibold)
titleLabel.text = "Please choose your Favourite food"
self.addSubview(titleLabel)
tableView.dataSource = self
tableView.delegate = self
tableView.register(UITableViewCell.self, forCellReuseIdentifier: "cell")
self.addSubview(tableView)
}
override func layoutSubviews() {
super.layoutSubviews()
var frame = self.bounds
frame.origin.y = labelHeight
frame.size.height -= labelHeight
tableView.frame = frame
titleLabel.frame = CGRect(x: 10, y: 0, width: frame.size.width - 20, height: labelHeight)
}
deinit {
print("deinit BottomPushModal ...")
}
}
let alert = BottomPushModal()
let height: CGFloat = 400
alert.frame = CGRect(x: 0, y: kScreenHeight() - height, width: kScreenWidth(), height: height)
alert.selectedBlock = { food in
self.favouriteFoodBtn.setTitle("Favourite is \(food)", for: .normal)
}
GCModalManager.defaultManager.add(alert)
[email protected], [email protected]
GCModalAlert is available under the MIT license. See the LICENSE file for more info.