class YHChatperSlider:UIView{
fileprivate var _viewMask:UIView!
fileprivate var _viewBot:UIView!
fileprivate let _heightViewBot = 44
var btnBackChapter:UIButton!
var btnForwardChapter:UIButton!
var slider:UISlider!
// MARK: -
override init(frame: CGRect) {
super.init(frame: frame)
self.isHidden = true
_setupUI()
}
required init?(coder aDecoder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}
// MARK: - Private Method
fileprivate func _setupUI(){
_viewMask = UIView()
_viewMask.backgroundColor = .clear
let aPanGes = UIPanGestureRecognizer(target: self, action: #selector(gestureOnViewMask(sender:)))
_viewMask.addGestureRecognizer(aPanGes)
let aTapGes = UITapGestureRecognizer(target: self, action: #selector(gestureOnViewMask(sender:)))
_viewMask.addGestureRecognizer(aTapGes)
self.addSubview(_viewMask)
_viewBot = UIView()
_viewBot.backgroundColor = .white
self.addSubview(_viewBot)
btnBackChapter = UIButton()
btnBackChapter.addTarget(self, action: #selector(onBackChapter(sender:)), for: .touchUpInside)
btnBackChapter.titleLabel?.font = UIFont.systemFont(ofSize: 18)
btnBackChapter.setTitle("<", for: .normal)
btnBackChapter.setTitleColor(kBlueColor_Swift, for: .normal)
_viewBot.addSubview(btnBackChapter)
btnForwardChapter = UIButton()
btnForwardChapter.addTarget(self, action: #selector(onForwardChapter(sender:)), for: .touchUpInside)
btnForwardChapter.titleLabel?.font = UIFont.systemFont(ofSize: 18)
btnForwardChapter.setTitle(">", for: .normal)
btnForwardChapter.setTitleColor(kBlueColor_Swift, for: .normal)
_viewBot.addSubview(btnForwardChapter)
slider = UISlider()
_viewBot.addSubview(slider)
_layoutUI()
}
fileprivate func _layoutUI(){
_viewMask.snp.makeConstraints { [unowned self](make) in
make.left.top.right.bottom.equalTo(self)
}
_viewBot.snp.makeConstraints { [unowned self](make) in
make.height.equalTo(self._heightViewBot)
make.left.right.equalTo(self)
make.bottom.equalTo(self).offset(self._heightViewBot)
}
btnBackChapter.snp.makeConstraints { [unowned self](make) in
make.size.equalTo(CGSize(width: 40, height: 40))
make.left.equalTo(self._viewBot).offset(10)
make.centerY.equalTo(self._viewBot.snp.centerY)
}
slider.setContentHuggingPriority(249, for: .horizontal)
slider.setContentCompressionResistancePriority(749, for: .horizontal)
slider.snp.makeConstraints { [unowned self](make) in
make.left.equalTo(self.btnBackChapter.snp.right).offset(10)
make.right.equalTo(self.btnForwardChapter.snp.left).offset(-10)
make.centerY.equalTo(self._viewBot.snp.centerY)
}
btnForwardChapter.snp.makeConstraints { [unowned self](make) in
make.size.equalTo(CGSize(width: 40, height: 40))
make.right.equalTo(self._viewBot).offset(-10)
make.centerY.equalTo(self._viewBot.snp.centerY)
}
}
// MARK: - Public Method
func show(){
self.isHidden = false
_viewBot.snp.updateConstraints { [unowned self](make) in
make.bottom.equalTo(self)
}
UIView.animate(withDuration: 0.2) {
self.layoutIfNeeded()
}
}
func hide(){
_viewBot.snp.updateConstraints { [unowned self](make) in
make.bottom.equalTo(self).offset(self._heightViewBot)
}
UIView.animate(withDuration: 0.2, animations: {
self.layoutIfNeeded()
}) { (_) in
self.isHidden = true
}
}
// MARK: - Action
@objc fileprivate func onBackChapter(sender:Any){
}
@objc fileprivate func onForwardChapter(sender:Any){
}
// MARK: - Gesture
@objc fileprivate func gestureOnViewMask(sender:UIGestureRecognizer){
if sender.state == .ended{
hide()
}
}
}
_viewSlider = YHChatperSlider(frame: CGRect(x: 0, y: 0, width: ScreenWidth, height: ScreenHeight-64))
view.addSubview(_viewSlider)
@objc fileprivate func gestureTapOnView(sender:UITapGestureRecognizer){
if sender.state == .ended{
_viewSlider.show()
}
}