【问题标题】:Ios creating simple camera overlay in Xcode how?ios如何在Xcode中创建简单的相机覆盖?
【发布时间】:2012-09-24 20:05:32
【问题描述】:

正如标题所说,我需要在使用UIImagePickerController 拍照时创建一个非常简单的相机叠加层。我想在相机上添加非常简单的.png 文件(如一个空框),但我不知道该怎么做。

我查看了此网页中的大部分教程,但其中大部分内容并不了解。对我来说这似乎很难,将一个简单的.png 文件添加到相机叠加层应该比这更容易。

(IBAction) getPhoto:(id) sender {
    UIImagePickerController * picker = [[UIImagePickerController alloc] init];
    picker.delegate = self;

    if((UIButton *) sender == choosePhotoBtn) {
        picker.sourceType = UIImagePickerControllerSourceTypeCamera;
    } else {

    }

    label1.text =@"PHOTO ACTION";

    [self presentModalViewController:picker animated:YES];
}

- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info {
    [picker dismissModalViewControllerAnimated:YES];
    imageView.image = [info objectForKey:@"UIImagePickerControllerOriginalImage"];
}

我应该在哪里实现我的叠加代码?我应该使用哪些类以及如何使用?

【问题讨论】:

    标签: ios xcode camera


    【解决方案1】:

    UIImagePickerController 的属性称为cameraOverlayView。这是一个UIView*,所以你需要创建一个并将你的PNG放到它的背景上,然后将它分配给你的picker的这个属性。

    好的,这是代码(我没有测试过)

    (IBAction) getPhoto:(id) sender 
    {
        UIImagePickerController * picker = [[UIImagePickerController alloc] init];
        picker.delegate = self;
    
        // creating overlayView
        UIView* overlayView = [[UIView alloc] initWithFrame:picker.view.frame];
        // letting png transparency be
        overlayView.backgroundColor = [UIColor colorWithPatternImage:[UIImage imageNamed:@"yourimagename.png"]];
        [overlayView.layer setOpaque:NO];
        overlayView.opaque = NO;
    
        picker.showsCameraControls = NO;
        picker.cameraOverlayView = overlayView;
    
        if((UIButton *) sender == choosePhotoBtn) 
        {
             if ([UIImagePickerController isSourceTypeAvailable:UIImagePickerControllerSourceTypeCamera])
             {
                 [picker setSourceType:UIImagePickerControllerSourceTypeCamera];
             } else {
                 //do something if the device has no camera or if the camera is disabled in settings (it cannot be assumed that the camera is available/not broken)
             }
        } else {
    
        }
    
        label1.text =@"PHOTO ACTION";
    
        [self presentModalViewController:picker animated:YES];
    }
    

    当然,您可以使用一些自定义的UIView* 子类而不是创建标准的UIView* overlayView,但其他一切都将保持不变。

    【讨论】:

    • 以及它是如何完成的我的意思是我应该在哪里实现相机覆盖视图代码?
    • 这是你的框架 = 我创建并命名为 cameraovarlayview 的视图控制器?你显示选择器的代码是什么?看看这个例子,它太复杂了我只想在屏幕中间显示一个简单的 png,比如太阳链接而不是其余的按钮。 mworldapps.com/…
    • 什么意思?您不需要创建任何其他内容。很可能,您会将其设置为 picker.view.frame
    • picker.frame 怎么设置?顺便感谢您到目前为止的回答。
    • 一个错字。确实是picker.view.frame。您无需再创建任何类。
    猜你喜欢
    • 1970-01-01
    • 2012-02-18
    • 1970-01-01
    • 1970-01-01
    • 2016-04-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多