1

我一直在使用UIImagePickerController我的应用程序预览的目的,我已经定制和放大/缩小按钮,我没有使用过CGAffineTransformScale,但是我用Google搜索,并使用CGAffineTransformScale在功能上实现变焦像这样...在实现放大了使用的UIImagePickerController

- (void) zoom_in_clkd 
{ 

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

} 

似乎正常,但是我想要实现放大缩小功能,我没有任何想法应该在CGAffineTransformScale其SX,SY值。

谁能告诉一个好的教程或示例代码使用CGAffineTransformScale

回答

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; 
     } 

我知道它不是回到之前的转变的正确方法,但它会做的伎俩。 :)

1

sx和sy分别表示x和y值的缩放因子。

如果你想缩小视图提供SX和SY < 1.0

从这个link下载示例代码。

+0

如果我给小于1,总视图大小本身正在减少,其似乎没有缩小,任何想法? – Newbee 2013-02-16 05:38:29

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); 
    }