簡體   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