2012-10-02 91 views
2

我正在尋找一種使用計時器從代碼和圖像顯示器在Objective-C中製作照片的方法。使用計時器以編程方式拍攝照片

我的意思是:我想要一個類似於標準照片應用程序的界面,但按下按鈕後不能拍照,但按鈕必須啓動一個定時器(從定時器我將檢查其他值)。

讓我們做出了榜樣:

  • 我按下按鈕

  • 定時器開始

  • 檢查值的1-2秒後,照片得到了

  • 照片自動保存在照片庫中。

  • 應用程序即可讓其他照片

但我沒有關於如何開始這個想法。我看到了一些稱爲Photo Application的代碼示例,但是沒有任何代碼能夠實現這一點,儘管我看到許多應用程序都這樣做。拍照時,應該簡單地保存。

我該怎麼做?

+0

所以基本上你想實現具有倒計時功能照片應用程序? – DrummerB

+0

我想檢查這些值以進行驗證,如果結果爲真,則照片獲取,如果沒有,則重新啓動計時器,顯然它會包含取消按鈕。無論如何,我不認爲這個內部代碼對你幫助我很重要。 – user1714647

+0

我正在閱讀一本手冊,我在2-3周內做了一些嘗試,但我並不擅長這些事件和框架。 – user1714647

回答

0

使用UIImagePickerController顯示默認相機GUI。

UIImagePickerController *picker = [[UIImagePickerController alloc] init]; 
picker.sourceType = UIImagePickerControllerSourceTypeCamera; 
picker.showsCameraControls = NO; 

你可以通過設置showsCameraControlsNO隱藏默認的相機控制。然後,您可以通過創建UIView,添加控件並將cameraOverlayView設置爲該視圖來定義自己的控件。

UIView *cameraControlsView = [[UIView alloc] initWithFrame:controlsFrame]; 
UIButton *captureButton = [[UIButton alloc] initWithFrame:buttonFrame]; 
[captureButton setTitle:@"Capture" forState:UIControlStateNormal]; 
[captureButton addTarget:self action:@selector(buttonPressed:)   
     forControlEvents:UIControlEventTouchUpInside]; 
[cameraControlsView addSubview:captureButton]; 
picker.cameraOverlayView = cameraControlsView; 

當用戶點擊自定義捕獲UIButton時,您可以啓動計時器。當計時器觸發時,您將執行驗證並使用takePicture方法捕獲圖像。

- (void)buttonPressed:(id)sender { 
    [NSTimer scheduledTimerWithTimeInterval:3.0f target:self 
    selector:@selector(timerFired:) userInfo:nil repeats:NO]; 
} 

- (void)timerFired:(NSTimer *)timer { 
    if (whateverIsOk) { 
     [self.picker takePicture]; 
    ) 
} 
+0

男人,感謝您的幫助,但我有一些困難應用它,有一個警告,定時器從來沒有使用過,當我按下按鈕什麼也沒有發生。 – user1714647

+0

什麼警告?您是否成功創建了GUI和按鈕?這不是一個複製粘貼解決方案,我只是在這裏輸入,而不檢查可能的錯誤。 – DrummerB

+0

我創建了GUI和按鈕,但是當我按下它時什麼都沒有發生,並且警告是「未使用的變量定時器」,在你的事件上 - (void)timerFired:(NSTimer *)定時器 – user1714647

0

有一個在UIImagePickerController類的方法進行拍照編程

-(void)takePicure 

保存圖片到圖片庫,你可以使用ALAssetLibrary

兩個選項

  1. ALAssetsLibrary *al = [[ALAssetsLibrary alloc] init]; [al writeImageDataToSavedPhotosAlbum:user.photo.image metadata:nil completionBlock:^(NSURL *assetURL, NSError *error) { }];

  2. void UIImageWriteToSavedPhotosAlbum(UIImage *image, id completionTarget, SEL completionSelector, void *contextInfo);

+0

我想'takePicture'已經保存到Photo Library中了,不是嗎? – DrummerB

+0

我不這麼認爲。我會查的 – Rowdur