Bạn cần phải thực hiện một phong tục UIImagePickerController
. Để làm điều đó, bạn sẽ cần đặt thuộc tính của trình tạo ảnh showsCameraControls
thành FALSE.
self.mImagePickerController.showsCameraControls = NO;
self.mImagePickerController.wantsFullScreenLayout = YES;
Khi bạn thực hiện việc này, không có điều khiển mặc định nào hiển thị cho bạn. Bạn sẽ cần phải thiết lập các nút tùy chỉnh cho khởi động/dừng ghi âm và lật máy ảnh, vv
Bây giờ, bạn có thể sử dụng start/stop phương pháp để quay video:
Khi một nhấp chuột vào ghi âm bắt đầu,
[self.mImagePickerController startVideoCapture];
Để dừng lại,
[self.mImagePickerController stopVideoCapture];
Để theo dõi các chuyển đổi giữa máy ảnh, bạn có thể sử dụng một lá cờ
if (self.mImagePickerController.cameraDevice == UIImagePickerControllerCameraDeviceRear)
{
self.mImagePickerController.cameraDevice = UIImagePickerControllerCameraDeviceFront;
isFrontCamera = YES;
}
else
{
self.mImagePickerController.cameraDevice = UIImagePickerControllerCameraDeviceRear;
isFrontCamera = NO;
}
Bạn có thể đặt các điều khiển theo ý muốn về thay đổi hướng. AppDelegate.m
-(NSUInteger)application:(UIApplication *)application supportedInterfaceOrientationsForWindow:(UIWindow *)window
Đây là đại biểu được gọi về thay đổi hướng. Bạn có thể sử dụng đối tượng của lớp cụ thể để gọi phương thức shouldAutorotate của nó và thiết lập các vị trí điều khiển camera theo hướng.
-(NSUInteger)application:(UIApplication *)application supportedInterfaceOrientationsForWindow:(UIWindow *)window
{
[self.objController shouldAutorotate];
return UIInterfaceOrientationMaskAll;
}
Bây giờ bên cameraviewcontroller.m
-(BOOL)shouldAutorotate
{
UIInterfaceOrientation interfaceOrientation = [[UIDevice currentDevice]orientation];
if(interfaceOrientation == UIInterfaceOrientationPortrait)
{
// your controls setup
}
else
{
// view accordingly for landscape
}
}
Tôi đã cố gắng để trang trải tất cả các điểm. Hãy cho tôi biết nếu bạn có bất kỳ sự nhầm lẫn nào. Hy vọng nó sẽ giúp :)
1) Bạn cần kiểm tra điều kiện về sự kiện nhấp của nút máy ảnh lật.
2) AppDelegate.h: Khai báo đối tượng của lớp học nơi bạn ghi video và tạo thuộc tính. Ở đây tôi đang sử dụng CameraViewController
làm ví dụ.
CameraViewController *objController;
Bây giờ trong AppDelegate.m:
self.objController = [[CameraViewController alloc]initWithNibName:@"CameraViewController" bundle:nil];
Bây giờ sử dụng trường hợp này để gọi phương thức shouldAutorotate
như tôi đã trình bày ở trên. Và trở về định hướng phong cảnh:
-(NSUInteger)application:(UIApplication *)application supportedInterfaceOrientationsForWindow:(UIWindow *)window
{
if(isOptionScreenActive == YES)
{
[self.shareController shouldAutorotate];
return UIInterfaceOrientationMaskLandscape;
}
else
{
[self.anotherController shouldAutorotate];
return UIInterfaceOrientationMaskPortrait;
}
}
Dưới đây là một isOptionScreenActive
flag
được thiết lập trong các viewWillAppear
của lớp ghi âm. Đặt nó false
trong viewDidUnload
. Hoặc có thể là viewWillAppear
của một lớp khác.
3) Tôi đã sử dụng cameraviewcontroller.m như một ví dụ. Nó phản ánh lớp ghi âm của bạn. Cũng trong phương thức shouldAutorotate
của lớp quay video của bạn, nếu hướng được phát hiện là chân dung, chỉ cần trả về NO. Bằng cách này, giao diện người dùng sẽ không thay đổi và bạn chỉ có thể giữ giao diện người dùng ở chế độ ngang.
vui lòng không đóng câu hỏi này. câu hỏi mà bạn đưa ra liên kết không có câu trả lời đúng và tất cả các giải pháp từ nhận xét đó không hoạt động. –
@iPatel bạn đã đọc câu hỏi của tôi chưa? Tôi đã nói về liên kết này. –
bạn đã thử đặt hướng video chưa? http://stackoverflow.com/questions/14811641/ios-camera-orientation#14812010 – Gotschi