使用UIImagePickerController实现放大\ out

时间:2013-02-16 04:33:14

标签: iphone ios cocoa-touch uiimagepickercontroller cgaffinetransformscale

我一直在使用UIImagePickerController进行应用程序预览,我有自定义和放大/缩小按钮,之前我没有使用过CGAffineTransformScale,但是我已经使用Google搜索并实现了放大功能CGAffineTransformScale喜欢这个......

- (void) zoom_in_clkd
{

        preview_picker.cameraViewTransform = CGAffineTransformScale(preview_picker.cameraViewTransform, 1.0, 1.2499);

}

看起来很好,但是我想实现缩小功能,我不知道它应该是CGAffineTransformScale中的sx,sy值。

任何人都可以告诉一个好的教程或示例代码使用CGAffineTransformScale吗?

3 个答案:

答案 0 :(得分:1)

sx和sy分别表示x和y值的缩放系数。

如果要缩小视图,请提供sx和sy< 1.0

从此link下载示例代码。

答案 1 :(得分:1)

我以不同的方式模拟缩小功能,我所做的是重置为身份(恢复到原始大小)并再次放大到我想要的位置..

      if (cameraTransformX == 2.0) {
            preview_picker.cameraViewTransform = CGAffineTransformIdentity;
            cameraTransformX -= 1.0;
        } else if (cameraTransformX == 3.0) {
            preview_picker.cameraViewTransform = CGAffineTransformIdentity;
            preview_picker.cameraViewTransform = CGAffineTransformScale(preview_picker.cameraViewTransform, 1.0, 1.2499);
            cameraTransformX -= 1.0;
        }  else if (cameraTransformX == 4.0) {
            preview_picker.cameraViewTransform = CGAffineTransformIdentity;
            preview_picker.cameraViewTransform = CGAffineTransformScale(preview_picker.cameraViewTransform, 1.0, 1.2499);
            preview_picker.cameraViewTransform = CGAffineTransformScale(preview_picker.cameraViewTransform, 1.0, 1.2499);
            cameraTransformX -= 1.0;
        }

我知道它不是回到之前转换的正确方法,但它会做一些技巧。 :)

答案 2 :(得分:0)

我的解决方案是保存初始cameraViewTransform并将其用于放大/缩小。对于缩小,缩小比例,最初设置为例如3.这是我的代码:

    // initial cameraViewTransform
    self.initialTransform = self.videoRecorderController.cameraViewTransform;

    // for zoom in
    if(self.zoomIn) {
            // increment scale
            self.scale += 0.5;
            self.videoRecorderController.cameraViewTransform = CGAffineTransformScale(self.initialTransform, self.scale, self.scale);
    }
    // for zoom out
    else {
           self.scale -= 0.5;
           self.videoRecorderController.cameraViewTransform = CGAffineTransformScale(self.initialTransform, self.scale , self.scale);
    }