gpt4 book ai didi

ios - UIView 的框架未显示为使用 UIPanGestureRecognizer 更新

转载 作者:行者123 更新时间:2023-12-01 19:51:11 25 4
gpt4 key购买 nike

我在 viewController 中有一个 subview ,我在其中添加了 UIPanGestureRecognizer .当用户向下拖动它时,我想展开这样的 subview ,所以我试图像这样处理手势识别器状态:

@objc func panning(_ gestureRecognizer: UIPanGestureRecognizer) {
let translation = gestureRecognizer.translation(in: view)

if gestureRecognizer.state == .began {
originalFrame = self.mySubview.frame
} else if gestureRecognizer.state == .changed {
if translation.y > 0 {
var newFrame = originalFrame
newFrame.size.height += translation.y
mySubview.frame = newFrame
}
}
}

当我在 mySubview.frame = newFrame 设置断点时,我看到 newFrame随翻译更新。但是,我没有看到屏幕中的框架变化, subview 看起来总是像开始一样。

我会错过什么?

最佳答案

PanGesture 是一个棘手的问题,但使用它非常有趣......

我假设您已将平移手势正确添加到 View 中。所以只写下手势的处理。

  func handlePanGesture(_ gesture: UIPanGestureRecognizer) {
var translatedPoint: CGPoint = gesture.translation(in: self.superview)

let playerCenterX: CGFloat = (gesture.view?.center.x)! + translatedPoint.x
let playerCenterY: CGFloat = (gesture.view?.center.y)! + translatedPoint.y

translatedPoint = CGPoint.init(x: playerCenterX,
y: playerCenterY)

gesture.view?.center = translatedPoint
gesture.setTranslation(CGPoint.zero, in: self.superview)

}

重要的是,您每次在手势移动结束时都将其平移设置回零。

根据您的要求更改此 self.superview并使用坐标更新您的 View 框架...

关于ios - UIView 的框架未显示为使用 UIPanGestureRecognizer 更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45836486/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com