前言
在前一篇文章AI编程探索- iOS 实现类似苹果地图 App 中的半屏拉起效果我们通过三方库实现了这个功能。可是我发现这个三方不能加阴影效果。也许是我不知道怎么加吧!于是只有自己搞咯!
拆解功能
这功能给人在感觉上,有点麻烦,其实认真分析其中用到的技术点,你也会跟我一样发出灵魂拷问,就这?
- 圆角+阴影
- 平移手势
- 平移动画效果
圆角+阴影
- 这功能已经老生常谈了,我还是在用比较古老的蠢办法。一个 View 加阴影,另一个View 加圆角。
平移手势
- 实现上下拖拉响应区域,控件跟随手势上下移动的效果。
- 添加平移手势
let panGesture = UIPanGestureRecognizer(target: self, action: #selector(handlePan(_:)))
touchView.addGestureRecognizer(panGesture)
- 手势处理
@objc func handlePan(_ gesture: UIPanGestureRecognizer) {
let translation = gesture.translation(in: self.view)
switch gesture.state {
case .began, .changed:
// 更新约束并添加动画效果
case .ended, .cancelled, .failed:
// 手势结束、取消或失败时重置平移量
gesture.setTranslation(.zero, in: self.view)
default:
break
}
}
平移动画效果
- 更新约束
- 使用UIView 动画 + layoutIfNeeded 刷新布局 实现动画
- 示例
self.snp.updateConstraints { make in
make.bottom.equalToSuperview().offset(tempY)
}
UIView.animat