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