0

コードを実行し、以下のコードでカメラを起動すると、カスタムの overlayView とデフォルトのカメラ ボタンが表示されます。唯一の問題は、UIImagePicker がかつてあった場所に空白のブラック ボックスが表示されることです。デフォルトの UIImagePicker コントロールとボタンを使用してカメラを作成し、デフォルトの imagePickerController の上に独自の IBOutlet UILabel を追加して、ラベルがすべてのデフォルトのカメラ コントロールとともに表示されるようにしています。私はこれを達成するのにひどい時間を過ごしています。乾杯!

- (void)viewDidLoad
{
    [super viewDidLoad];

    if (self.image == nil &&  [self.videoFilePath length] == 0) {
        self.imagePicker = [[UIImagePickerController alloc] init];
        self.imagePicker.delegate = self;
        self.imagePicker.allowsEditing = NO;
        self.imagePicker.videoMaximumDuration = 10;

        if ([UIImagePickerController isSourceTypeAvailable:UIImagePickerControllerSourceTypeCamera]) {
            self.imagePicker.sourceType = UIImagePickerControllerSourceTypeCamera;
        }
        self.imagePicker.mediaTypes = [UIImagePickerController availableMediaTypesForSourceType:self.imagePicker.sourceType];

        [[NSBundle mainBundle] loadNibNamed:@"OverlayView" owner:self options:nil];
        self.overlayView.frame = self.imagePicker.cameraOverlayView.frame;
        self.imagePicker.cameraOverlayView = self.overlayView;
        self.overlayView = nil;
    }
    [self presentViewController:self.imagePicker animated:YES completion:nil];
}
4

2 に答える 2

0

これで直りました。私は CGPoints と CGRect について調査を行い、この解決策を考え出しました。それが最もエレガントなソリューションかどうかはわかりませんが、機能し、かなり理にかなっているようです。- (void)viewDidLoad { [super viewDidLoad];

    if (self.image == nil &&  [self.videoFilePath length] == 0) {
        self.imagePicker = [[UIImagePickerController alloc] init];
        self.imagePicker.delegate = self;
        self.imagePicker.allowsEditing = YES;
        self.imagePicker.videoMaximumDuration = 10;

        if ([UIImagePickerController isSourceTypeAvailable:UIImagePickerControllerSourceTypeCamera]) {
            self.imagePicker.sourceType = UIImagePickerControllerSourceTypeCamera;
        }
        self.imagePicker.mediaTypes = [UIImagePickerController availableMediaTypesForSourceType:self.imagePicker.sourceType];
        [self presentViewController:self.imagePicker animated:NO completion:nil];
            }
    [[NSBundle mainBundle] loadNibNamed:@"OverlayView" owner:self options:nil];
    self.overlayView.frame = CGRectMake(160,0,0,0);
    self.imagePicker.cameraOverlayView = self.overlayView;

}
于 2013-09-03T09:12:49.817 に答える