繁体   English   中英

在cameraOverlayView中绘制图像

[英]drawing image in cameraOverlayView

我正在使用此代码使用自定义cameraOverlayView创建UIImagePickerController。 出于测试目的,该叠加层仅是我使用UIBezierPath在CircleView中绘制的一个圆。 但是,在CircleView中绘制的圆没有出现在叠加层中。 该叠加层应该是我的CircleView的UIView的子类。 您能解释一下为什么弹出叠加层时不显示圆圈吗? 我在viewDidLoad初始化circleView,然后将其设置为viewDidAppearcameraOverlayView

的viewController

@property (strong, nonatomic) CircleView *overlay;

viewDidLoad中

self.overlay = [[CircleView alloc] init];

viewDidAppear

    if ([UIImagePickerController isSourceTypeAvailable:UIImagePickerControllerSourceTypeCamera]) {

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

        picker.delegate = self;
        picker.allowsEditing = YES;
        picker.sourceType = UIImagePickerControllerSourceTypeCamera;
        picker.showsCameraControls = NO;
        picker.navigationBarHidden = YES;
        picker.wantsFullScreenLayout = YES;
        picker.cameraOverlayView = self.overlay;
        picker.mediaTypes = [[NSArray alloc] initWithObjects: (NSString *) kUTTypeMovie, nil];

        [self presentViewController:picker animated:YES completion:NULL];
    }

CircleView

- (id)initWithCoder:(NSCoder *)aDecoder {

    if (self = [super initWithCoder:aDecoder]) {

        self.shape = [UIBezierPath bezierPathWithOvalInRect:(CGRectMake(0, 50, 50, 50))];


    }
    return self;
}


- (void)drawRect:(CGRect)rect{

  [[UIColor colorWithRed: (114/255.0) green: (5/255.0) blue:(46/255.0) alpha:1] setFill];
   [self.shape fill];


}

这里有两个问题:

  • 圆形叠加视图的大小为零,因为它是使用init而不是initWithFrame:创建的initWithFrame: init退回到{0,0,0,0}的帧上,因为您未提供任何帧信息)。

  • 圆形叠加视图在initWithCoder:中进行了一些重要的初始化,但是从未调用此方法,因为您是使用init实例化它的。 因此,它的self.shape为nil,并且drawRect:未绘制任何内容。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM