2016-03-02 2 views
0

Я опубликовал IOS приложение в стриже, основные функции являются: 1) добавить фото/взять фото 2) добавить смайлик на фото 3) масштабирование, поворот, перетаскивание Emoji чтобы украсить фотографию 4) поделитесь ею с instagram.Snapchat, как щепотка зум на прошивке

Emojis можно поворачивать, увеличивать и перетаскивать. Я реализовал эти функции с помощью UIGestureRecognizers, таких как UIRoationGestrueRecognizer, UIPinchGestureRecognizer и UIPanGesstureRecognizer.

Теперь я пытаюсь обновить приложение с помощью snapchat-подобной функции масштабирования, когда пользователи могут увеличивать/уменьшать emojis между двумя пальцами до крайности. Текущий жест щепотки работает только тогда, когда пальцы пользователя находятся на изображении (emoji).

Любая идея/пример кода, как сделать snapchat-like pinch zoom? Ниже приведены коды, как обрабатывать вращение, щепотку и перетаскивание. Заранее спасибо.

// 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() 
     } 
    } 
} 
+0

Что делать с этого момента? сначала поиск, а затем спросите –

+0

@MuhammadRaheelMateen Я много искал, но не смог найти примеров для snapchat-подобного увеличения масштаба в swift. Если вы можете найти один, пожалуйста, укажите его. –

ответ

0

Я также ищу перетаскивание, панорамирование и масштабирование в то же время, что и 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 
    } 
} 
Смежные вопросы