使用 Storyboard 在 UIImagePickerController 之上创建叠加视图

Posted

技术标签:

【中文标题】使用 Storyboard 在 UIImagePickerController 之上创建叠加视图【英文标题】:Create Overlay View on top of UIImagePickerController with Storyboard 【发布时间】:2015-01-23 04:00:31 【问题描述】:

我正在尝试在我的 UIImagePickerController 相机预览屏幕上创建自定义叠加层。我不确定如何使用带有情节提要的 XCode 6 来做到这一点。我正在使用Objective-C。

我已经进行了相机预览。我在情节提要中创建了一个 UIView,并使用了:picker.cameraOverlayView = overlay;

创建覆盖视图。但是如何将故事板中的 UIView 连接到代码中的覆盖层?在我看来,UIView 总是显示在 UIImagePickerController 的相机预览下方。如何将自定义叠加层放置在 UIImagePickerController 视图的“顶部”?

谢谢

【问题讨论】:

我能想到的是从一个nib文件中加载视图,然后将其分配给cameraOverlayView。 【参考方案1】:

我通过使用图像 png 并将其显示在顶部来实现这一点...创建一个类“OverlayView”...

.h

#import <UIKit/UIKit.h>

@interface OverlayView : UIView

@end  

.m

#import "OverlayView.h"

@implementation OverlayView


- (id)initWithFrame:(CGRect)frame 
  if (self = [super initWithFrame:frame]) 
    //clear the background color of the overlay
    self.opaque = NO;
    self.backgroundColor = [UIColor clearColor];

    //load an image to show in the overlay

    UIImage *overlayImgae = [UIImage imageNamed:@"overlay.png"];
    UIImageView *overlayImageView = [[UIImageView alloc]
                                 initWithImage:overlayImage];
    overlayImageView.frame = CGRectMake(115, -20, 815, 815);
    [self addSubview:overlayImageView];

    

    return self;
    

    @end

根据你的图片大小改变CGRectMake...然后在你初始化imagePicker的ViewController中做

#import "OverlayView.h"

UIImagePickerController *imagePicker = [[UIImagePickerController alloc] init];




OverlayView *overlay = [[OverlayView alloc]
                        initWithFrame:CGRectMake(0, -24.25, SCREEN_WIDTH, SCREEN_HEIGTH)];

imagePicker.cameraOverlayView = overlay;

再次更改 CGRectMake 数字以适应...

【讨论】:

这是一个糟糕的解决方案。你应该使用自动布局来适应不同的屏幕尺寸 “再次更改 CGRectMake 数字以适应...”并且通过上面的代码,如果他定义 SCREEN_WIDTH 和 SCREEN_HEIGTH...,它将始终是全屏的?谁需要 AL?做数学..

以上是关于使用 Storyboard 在 UIImagePickerController 之上创建叠加视图的主要内容,如果未能解决你的问题,请参考以下文章

使用 Storyboard 时不通过 Storyboard 推送 ViewController

无法打开“Storyboard.storyboard”

iOS中Storyboard使用要点记录

如何在xcode中使用storyboard

storyBoard升级版 -在代码中使用约束

storyboard的使用