2014-02-18 55 views
0

我試圖複製所有的蘋果公司提供該示例應用程序的功能叫做AVCam:https://developer.apple.com/library/ios/samplecode/AVCam/Introduction/Intro.html#//apple_ref/doc/uid/DTS40010112-Intro-DontLinkElementID_2需要改變的CALayer類的大小和位置的對象

我有被改變的大小麻煩的唯一的事情, UIView對象的位置。問題是我正在使用蘋果的示例代碼,這對我來說沒有意義。

Apple提供了這個示例VC,我稱之爲MediaCapturePreviewView。這裏是頭文件代碼:

#import <UIKit/UIKit.h> 

@class AVCaptureSession; 

@interface MediaCapturePreviewView : UIView 

@property (nonatomic) AVCaptureSession *session; 

@end 

這裏是它的主要文件代碼:

#import "MediaCapturePreviewView.h" 
#import <AVFoundation/AVFoundation.h> 

@implementation MediaCapturePreviewView 

- (void)drawRect:(CGRect)rect 
{ 
    // Drawing code 
} 
*/ 

+ (Class)layerClass 
{ 
    return [AVCaptureVideoPreviewLayer class]; 
} 

- (AVCaptureSession *)session 
{ 
    return [(AVCaptureVideoPreviewLayer *)[self layer] session]; 
} 

- (void)setSession:(AVCaptureSession *)session 
{ 
    [(AVCaptureVideoPreviewLayer *)[self layer] setSession:session]; 
} 


@end 

然後在我的應用程序的中央視圖控制器,我已經進口的,我只是表現出了「MediaCapturePreviewView」的頭文件您。最後但並非最不重要的,在我中心視圖控制器的主要文件,我有一個IBOutlet中,看起來像這樣在接口方面:

@property (nonatomic, weak) IBOutlet MediaCapturePreviewView *previewView; 

以上IBOutlet中已經連接在Interface Builder一個UIView對象覆蓋整個iPhone屏幕。

然後在這裏是previewView是如何使用的,當您點擊「拍照」按鈕,一個小例子:

- (IBAction)snapStillImage:(id)sender 
{ 
    dispatch_async([self sessionQueue], ^{ 
     // Update the orientation on the still image output video connection before capturing. 
     [[[self stillImageOutput] connectionWithMediaType:AVMediaTypeVideo] setVideoOrientation:[[(AVCaptureVideoPreviewLayer *)[[self previewView] layer] connection] videoOrientation]]; 

我已經嘗試了上面的方法調用之後加入這個代碼,但它是沒有幫助:

_previewView.frame = CGRectMake(0, 0, self.view.bounds.size.width, self.view.frame.size.height/2); 

我知道,你可以編輯像框架,範圍和位置CALayer的類對象的屬性,但我只是卡住了,不知道哪兒我需要編輯這些東西。

這是當前的UIView的外觀拍攝照片時,如:

enter image description here

而這正是我需要它看起來像:

enter image description here

基本上,我需要它佔據iPhone屏幕的前50%。

任何幫助非常感謝你。

+0

的可能重複的([在界面生成的UIView對象的大小使用的應用程序時改變] http://stackoverflow.com/questions/21848492/size -of-的UIView對象合界面助洗劑 - 變化 - 時 - 使用最應用) –

回答

0

該視頻具有適合iPhone屏幕的默認捕捉比率。如果您嘗試將其縮放到不同的比例(如半屏),您將會看到扭曲的圖像或裁剪出的圖像。

爲了實現你想要做的事情,我認爲用一個包含你想要的控件的UIView來遮住屏幕的一半將變得更容易(比如拍一個照片按鈕),然後裁剪捕獲的全屏圖像至其一半大小與這樣的事情:

CGRect clippedRect = CGRectMake(0, 0, self.view.frame.size.width,self.view.frame.size.height/2.0); 
CGImageRef imageRef = CGImageCreateWithImageInRect([image CGImage], clippedRect); 
UIImage *newImage = [UIImage imageWithCGImage:imageRef]; 
CGImageRelease(imageRef); 
相關問題