今天讲GitHub - RxSwiftCommunity/RxGesture,RxGesture是封装UIGestureRecognizer
的方法,帮助我们在任何view上面进行各种手势的侦测。
在遇到RxGesture之前,我是这样写
let myView: UIView = UIView()
let tapGesture = UITapGestureRecognizer()
myView.addGestureRecognizer(tapGesture)
tapGesture.rx.event
.debug("Tap")
.subscribe()
.disposed(by: disposeBag)
建立一个UITapGestureRecognizer()
,给myView
加入手势的识别,在用Rx的方式监听手势的事件。
当我遇到RxGesture之後,我变成这样写
let myView: UIView = UIView()
myView.rx.tapGesture()
.when(.recognized)
.debug("Tap")
.subscribe()
.disposed(by: disposeBag)
myView
扩充了tap
手势的事件,when
可以帮助我们过滤UIGestureRecognizerState
,使用时监听即可。
以下就记录一下常用的手势,假设我有一个UIView叫做myView
let myView = UIView(frame: .zero)
self.view.addSubview(myView)
myView.snp.makeConstraints { make in
make.width.height.equalTo(200)
make.center.equalToSuperview()
}
Tap 点一下
myView.rx.tapGesture()
.when(.recognized)
.subscribe(onNext: { _ in
print("Tap")
})
.disposed(by: disposeBag)
Double Click 点两下
myView.rx.tapGesture() { gesture, _ in
gesture.numberOfTapsRequired = 2
}
.when(.recognized)
.subscribe(onNext: { _ in
print("Double Click")
})
.disposed(by: disposeBag)
Long Press 长按
myView.rx.longPressGesture()
.when(.began)
.subscribe(onNext: { _ in
print("Long Press")
})
.disposed(by: disposeBag)
Pan 拖移
myView.rx.panGesture()
.when(.began, .changed, .ended)
.subscribe(onNext: {
$0.view?.center = $0.location(in: self.view)
print("panGesture: \($0.state)")
})
.disposed(by: disposeBag)
Swipe 滑动
myView.rx.swipeGesture(.up, .down)
.when(.recognized)
.subscribe(onNext: {
print("Swipe \($0.direction.rawValue)")
})
.disposed(by: disposeBag)
Pinch 缩放
myView.rx.pinchGesture()
.when(.began, .changed, .ended)
.subscribe(onNext: {
$0.view?.transform = CGAffineTransform(scaleX: $0.scale, y: $0.scale)
print("Pinch \($0.scale)")
})
.disposed(by: disposeBag)
Rotation 旋转
myView.rx.rotationGesture()
.when(.began, .changed, .ended)
.subscribe(onNext: {
let angle = $0.rotation * (180 / CGFloat(Double.pi))
$0.view?.transform = CGAffineTransform(rotationAngle: $0.rotation)
print("Rotation: \($0.state), \(angle)")
})
.disposed(by: disposeBag)
以上,就是今天介绍RxGesture的内容,原本对手势没到很了解,工作上也不太接触,反倒是趁这机会接触了一下,满有趣的
倒数两天,相处时间不多了,明天见罗,大家掰掰
<<: [铁人12:Day 28] 「AI 的未来十年」摘要 4:混合式架构
>>: [Day27]用Canvas打造自己的游乐场-labyrinth 键盘控制角色
Open-Match 配对框架为了可以弹性调整部署规模,使用了微服务架构并结合 kubernetes...
iOS APP 开发 OC 第十四天,签证 tags: OC 30 day 资料来源:iOS 打包签...
MoneyDJ理财网 - 葛兰碧八大法则 葛兰碧八法是根据移动平均线和股价之间的关系,来判断买入,卖...
用HTML+纯JS试作一表单,规格: 两个输入框 一个提交按钮 点击按钮时显示:输入的两个数字总和 ...
SUM() 函数用来计算一数值栏位的总合。用来算金额等数字类型的都很好用~ SUM() 语法 (SQ...