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