好的,所以我意识到我可以从图层的CATransform3D中找到比例值,如下所示:
float scale = [[layer valueForKeyPath: @"transform.scale"] floatValue];
Run Code Online (Sandbox Code Playgroud)
但我不能为我的生活弄清楚如何从CGAffineTransform中找到比例值.比方说我有这个名为"cameraTransform"的CGAffineTransform:
UIImagePickerController *imagePicker = [[UIImagePickerController alloc] init];
CGAffineTransform *cameraTransform = imagePicker.cameraViewTransform;
Run Code Online (Sandbox Code Playgroud)
现在如何从cameraTransform获取比例值?
我想放大并缩小图像视图,我不想使用UIScrollView.所以为此我使用了UIPinchGestureRecognizer,这是我的代码 -
[recognizer view].transform = CGAffineTransformScale([[recognizer view] transform], [recognizer scale], [recognizer scale]);
recognizer.scale = 1;
Run Code Online (Sandbox Code Playgroud)
这适用于放大和缩小.但问题是我想放大和缩小特定比例,如在UIScrollView中我们可以设置maxZoom和minZoom.我找不到任何解决方案,每个关于UIPinchGestureRecognizer的教程都只描述相同的代码.
我有一个UIView,我在触摸时缩小,并在触摸结束或取消时缩小.
我一直在扩展这样的观点
缩小:
CGAffineTransform transform = CGAffineTransformMakeScale(0.95, 0.95);
self.transform = transform;
Run Code Online (Sandbox Code Playgroud)
放大:
CGAffineTransform transform = CGAffineTransformMakeScale(1.0, 1.0);
self.transform = transform;
Run Code Online (Sandbox Code Playgroud)
这不会保留任何其他变换.我知道我可以用它来保存旧的变换:
缩小:
CGAffineTransform transform = CGAffineTransformScale(self.transform, 0.95, 0.95);
self.transform = transform;
Run Code Online (Sandbox Code Playgroud)
放大:
CGAffineTransform transform = CGAffineTransformScale(self.transform, 1.0, 1.0);
self.transform = transform;
Run Code Online (Sandbox Code Playgroud)
但是,当然这里扩大规模没有影响 - 此外还有可能应用累积缩小动画.基本上我想要一种绝对应用比例变换而不影响任何其他变换的方法.有没有办法做到这一点?我不认为使用1.0/0.95作为放大因子,因为视图可能在取消或结束之前接收两次触摸.
我想我问这个问题同样的事情:只将CGAffineTransform的scale组件应用到UIView,但我不认为这里的答案对我有用.
我的目标是iOS 7及更高版本.