当我在swift中向上滑动时,如何减小比例
我想在向上滑动时减小uiview的比例,我想在ios 12或13中关闭应用程序时使用相同的动画当我在swift中向上滑动时,如何减小比例,swift,uikit,uipangesturerecognizer,Swift,Uikit,Uipangesturerecognizer,我想在向上滑动时减小uiview的比例,我想在ios 12或13中关闭应用程序时使用相同的动画 class ViewController: UIViewController { @IBOutlet weak var myView: UIView! override func viewDidLoad() { super.viewDidLoad() // Do any additional setup after loading the view.
class ViewController: UIViewController {
@IBOutlet weak var myView: UIView!
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view.
let panGesture = UIPanGestureRecognizer(target: self, action: #selector(didPanningFromBottom))
myView.addGestureRecognizer(panGesture)
panGesture.delegate = self
}
@objc func didPanningFromBottom(recognizer: UIPanGestureRecognizer){
if recognizer.state == .began {
print("began")
}
else if recognizer.state == .changed {
UIView.animate(withDuration: 0.1, delay: 0.25, options: .curveEaseOut) {
self.myView.transform = CGAffineTransform(scaleX: 0.25, y: 0.25 )
}
}
}
}
你可以这样做 假设代码的其余部分完好无损,只需交换
didPanningFromBottom
基本上你需要做两件事。首先跟踪拖动操作,然后用手指沿着视图移动,如果需要,可以稍微缩放一下。第二,在发布时,确定是应该为视图设置动画,还是让它反弹回来。在我的代码中,我检查了释放点的速度和距离。您可能需要修改确切的值
您可能还需要检查。取消
案例以始终移回起始位置
@objc func didPanningFromBottom(recognizer: UIPanGestureRecognizer){
let yPosition = recognizer.translation(in: view).y
let yVelocity = recognizer.velocity(in: view).y
if recognizer.state == .began {
} else if recognizer.state == .changed {
// Scale down a small amount
let scale: CGFloat = 1.0 - abs(yPosition / 2000)
myView.transform = CGAffineTransform.identity
.translatedBy(x: 0, y: yPosition)
.scaledBy(x: scale, y: scale)
} else if recognizer.state == .ended {
// If either have a minimum velocity or release beyond a fixed point
if yVelocity < -200 || (yVelocity <= 0 && yPosition < 400) {
UIView.animate(withDuration: 0.25) {
self.myView.transform = CGAffineTransform.identity.translatedBy(x: 0, y: -self.view.bounds.size.height / 2 - self.myView.bounds.size.height / 2)
self.myView.alpha = 0
}
} else {
// Move it back to start
UIView.animate(withDuration: 0.25) {
self.myView.transform = CGAffineTransform.identity
}
}
}
}
@objc func didpanningfromtombottom(识别器:UIPangestureReceignizer){
让yPosition=recognizer.translation(在:视图中).y
让yVelocity=recognizer.velocity(在:视图中).y
如果识别器.state==.已开始{
}否则,如果识别器.state==.changed{
//缩小一小部分
让刻度:CGFloat=1.0-abs(位置/2000)
myView.transform=CGAffineTransform.identity
.translatedBy(x:0,y:y位置)
.scaledBy(x:比例,y:比例)
}如果recognizer.state==。结束,则为else{
//如果有一个最小速度或释放超过一个固定点
如果yVelocity<-200 | |(yVelocity您当前的代码有什么问题?您需要回答您的问题,并清楚地解释您的预期行为以及您当前的代码与之不匹配的原因。@DávidPásztor我想向上拖动以增加uiview的比例,同时我的手指向上移动uiview以减小其比例我非常需要您that@ArbazChughtai别忘了做标记请接受我的回答。