Я опубликовал 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()
}
}
}
Что делать с этого момента? сначала поиск, а затем спросите –
@MuhammadRaheelMateen Я много искал, но не смог найти примеров для snapchat-подобного увеличения масштаба в swift. Если вы можете найти один, пожалуйста, укажите его. –