gpt4 book ai didi

ios - 在相机 OverlayView 中绘制图像

转载 作者:行者123 更新时间:2023-11-29 12:42:42 25 4
gpt4 key购买 nike

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

View Controller

@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];
}

圆形 View

- (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];


}

最佳答案

这里有两个问题:

  • 您的圆形覆盖 View 的大小为零,因为您使用 init 而不是 initWithFrame: 创建它(init 依赖于{0,0,0,0} 的帧,因为您没有提供帧信息)。

  • 您的圆形覆盖 View 在 initWithCoder: 中进行了一些重要的初始化,但此方法从未被调用,因为您正在使用 init 对其进行实例化。因此它的 self.shape 是 nil 并且在它的 drawRect: 中没有绘制任何东西。

关于ios - 在相机 OverlayView 中绘制图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24462541/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com