0

developer.apple.com から「UIImagePickerController を使用して写真を選択して写真を撮る」というサンプル コードをダウンロードし、基本的にはそのままにしておきました。機能を追加しました。写真を撮った後、もう一度 imagePickerController ビューに戻って別の写真を撮ると、以前に撮った写真にオーバーレイされます。スライダーもあり、オーバーレイの不透明度を変更でき、うまく機能します。

ただし、以前に撮影した写真はビューに合わせて拡大縮小されておらず、元の解像度の一部しか表示されていません。では、overlayImage を適切なサイズに設定するにはどうすればよいでしょうか。ストーリーボード/nibファイルを使用してみました/プログラムで追加しましたが、成功しませんでした.

@property (nonatomic, weak) IBOutlet UIImageView *imageView;
@property (weak, nonatomic) IBOutlet UIImageView *overlayImage;
@property (nonatomic) IBOutlet UIView *overlayView;

メソッドは次のとおりです。

- (void)showImagePickerForSourceType:(UIImagePickerControllerSourceType)sourceType
{
if (self.imageView.isAnimating)
{
    [self.imageView stopAnimating];
}

if (self.capturedImages.count > 0)
{
    //[self.capturedImages removeAllObjects];
}

UIImagePickerController *imagePickerController = [[UIImagePickerController alloc] init];
imagePickerController.modalPresentationStyle = UIModalPresentationCurrentContext;
imagePickerController.sourceType = sourceType;
imagePickerController.delegate = self;
imagePickerController.showsCameraControls = NO;

if (sourceType == UIImagePickerControllerSourceTypeCamera)
{
    [[NSBundle mainBundle] loadNibNamed:@"OverlayView" owner:self options:nil];
    self.overlayView.frame = imagePickerController.cameraOverlayView.frame;
    imagePickerController.cameraOverlayView = self.overlayView;
    self.overlayView = nil;
    self.overlayImage = self.imageView;
    self.overlayImage.alpha = 0.5;

    UISlider *slider=[[UISlider alloc]initWithFrame:CGRectMake(60, 80, 200, 30)];
    [slider setMaximumValue:1.0];
    [slider setMinimumValue:0.0];
    [slider setValue:0.5];
    [slider addTarget:self action:@selector(sliderChanged:)  forControlEvents:UIControlEventValueChanged];

    if (self.capturedImages.count > 0)
    {
        [imagePickerController.cameraOverlayView addSubview:self.overlayImage];
        [imagePickerController.cameraOverlayView addSubview:slider];
    }
}

self.imagePickerController = imagePickerController;
[self presentViewController:self.imagePickerController animated:YES completion:nil];
}
4

2 に答える 2

0

解決しました!シンプルで:

self.overlayImage.image = self.imageView.image;

それ以外の:

self.overlayImage = self.imageView;
于 2013-09-21T07:59:07.197 に答える
0

あなたのコードサンプルでは、self.imageView.frame​​どこにも設定が表示されません。私が質問を正しく理解していれば、これが問題です。

于 2013-09-20T16:18:07.730 に答える