我一直在尝试在图像上实现类似Snapchat的编辑文本.
我到目前为止所做的是在UI ImageView的中心实现UILabel,我在这个UILabel中添加了3个手势:UIPanGestureRecognizer,UIPinchGestureRecognizer& UIRotationGestureRecognizer.
我到目前为止所做的是在UI ImageView的中心实现UILabel,我在这个UILabel中添加了3个手势:UIPanGestureRecognizer,UIPinchGestureRecognizer& UIRotationGestureRecognizer.
我已经设法实现了Pan方法,但是我很难让Pinch Rotation像他们一样平滑,我得到了可怕的结果T_T
你们怎么看待这个?哪个组件涉及此&如果你有任何阅读/观看材料我可以用来完成这个.
谢谢 :)
编辑:
这些是我实施的处理Pinch& amp;的方法.回转:
func handlePinch(recognizer: UIPinchGestureRecognizer) { if let view = recognizer.view as? UILabel { view.transform = CGAffineTransformScale(view.transform,recognizer.scale,recognizer.scale) } } func handleRotate(recognizer: UIRotationGestureRecognizer) { if let view = recognizer.view as? UILabel { view.transform = CGAffineTransformRotate(view.transform,recognizer.rotation) } }
预览我实施的夹点如何工作的视频:
https://drive.google.com/file/d/0B-AVM51jxsvUY2RUUHdWbGo5QlU/view?usp=sharing
解决方法
找到了一个解决方案,显然我只需要在Rotation&捏合始终重置视图的旋转/比例.
例如,将我的Recognizer.scale设置为1.0,将Recognizer.rotation设置为0.0.
例如,将我的Recognizer.scale设置为1.0,将Recognizer.rotation设置为0.0.
这是我的代码示例:
func handlePan(recognizer: UIPanGestureRecognizer) { let translation = recognizer.translationInView(view) if let view = recognizer.view { view.center = CGPoint(x:view.center.x + translation.x,y:view.center.y + translation.y) } recognizer.setTranslation(CGPointZero,inView: view) } func handlePinch(recognizer: UIPinchGestureRecognizer) { if let view = recognizer.view as? UILabel { let pinchScale: CGFloat = recognizer.scale view.transform = CGAffineTransformScale(view.transform,pinchScale,pinchScale) recognizer.scale = 1.0 } } func handleRotate(recognizer: UIRotationGestureRecognizer) { if let view = recognizer.view as? UILabel { let rotation: CGFloat = recognizer.rotation view.transform = CGAffineTransformRotate(view.transform,rotation) recognizer.rotation = 0.0 } }