gpt4 book ai didi

ios - iOS 上类似 snapchat 的捏合缩放

转载 作者:行者123 更新时间:2023-11-29 12:03:53 24 4
gpt4 key购买 nike

我在 swift 中发布了 iOS 应用程序,其主要功能是:1)添加照片/拍照2)在照片上添加表情符号3) 缩放、旋转、拖动表情符号来装饰照片4) 在 Instagram 上分享。

表情符号可以旋转、缩放和拖动。我已经使用 UIGestureRecognizers(例如 UIRoationGestureRecognizer、UIPinchGestureRecognizer 和 UIPanGesstureRecognizer)实现了这些功能。

现在我正在尝试使用类似 snapchat 的捏合缩放功能更新应用程序,用户可以在两个手指之间将表情符号放大/缩小到极致。当前的捏合手势仅在用户手指位于 imageView(表情符号)上时有效。

任何想法/示例代码如何进行类似 snapchat 的捏合缩放?下面的代码是我如何处理旋转、收缩和拖动的。提前致谢。

// UI Gesture Recognizers
@IBAction func handlePinch(recognizer : UIPinchGestureRecognizer) {
if(deleteMode) {
return
}
if let view = recognizer.view {
view.transform = CGAffineTransformScale(view.transform,
recognizer.scale, recognizer.scale)
recognizer.scale = 1
}
}

@IBAction func handleRotate(recognizer : UIRotationGestureRecognizer) {
if(deleteMode) {
return
}
if let view = recognizer.view {
view.transform = CGAffineTransformRotate(view.transform, recognizer.rotation)
recognizer.rotation = 0
}
}

@IBAction func handlePan(recognizer:UIPanGestureRecognizer) {
if(deleteMode) {
return
}
let translation = recognizer.translationInView(self.view)
var centerX: CGFloat!
var centerY: CGFloat!

if let view = recognizer.view {

// limit the boundary - using backgroundPanel.frame.width, height, origin.x, origin.y
if(view.center.x + translation.x < panelBackground.frame.origin.x) {
centerX = view.center.x + translation.x + 10
} else if(view.center.x > panelBackground.frame.size.width){
centerX = view.center.x + translation.x - 10
} else {
centerX = view.center.x + translation.x
}

if(view.center.y < panelBackground.frame.origin.y - 60){
// set y that I can use below
centerY = view.center.y + translation.y + 10
} else if(view.center.y > panelBackground.frame.size.height){
centerY = view.center.y + translation.y - 10
} else {
centerY = view.center.y + translation.y
}

// set final position
view.center = CGPoint(x:centerX,
y:centerY)

recognizer.setTranslation(CGPointZero, inView: self.view)

}
}

@IBAction func handleLongPress(recognizer: UILongPressGestureRecognizer) {
if(recognizer.state == UIGestureRecognizerState.Began) {
if(!deleteMode) {
print("LongPress - Delete Shows")
for (_, stickers) in self.backgroundImage.subviews.enumerate() {
for (_, deleteButtons) in stickers.subviews.enumerate() {
if let delete:UIImageView = deleteButtons as? UIImageView{
if(delete.accessibilityIdentifier == "delete") {
delete.alpha = 0.5
}
}
}
}
deleteMode = true
} else {
deleteButtonHides()
}
}
}

最佳答案

我也在寻找像 snapchat 一样同时进行拖动、平移和缩放,但如果您只是在寻找缩放。我正在使用以下功能作为标签以通过捏合缩放。这并不顺利,但可以进行缩放工作。

  func handlePinch(recognizer: UIPinchGestureRecognizer) {
if let view = recognizer.view as? UILabel {
let pinchScale: CGFloat = recognizer.scale
view.transform = view.transform.scaledBy(x: pinchScale, y: pinchScale)
recognizer.scale = 1.0
}
}

要同时拖动、平移和缩放,请查看我的以下帖子:

Pinch, drag and pan at the same time

关于ios - iOS 上类似 snapchat 的捏合缩放,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35756473/

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