[英]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.