0

Я загрузил образец кода «Использование UIImagePickerController для выбора фотографий и съемки фотографий» с сайта developer.apple.com, и в основном я оставил его как есть. Я добавил функциональность, что если бы я сделал снимок, и я снова в представлении imagePickerController, чтобы сделать другое изображение, оно наложено на ранее сделанное изображение. Существует также слайдер, и я могу изменить непрозрачность наложения, отлично работает.Как установить правильный размер UIImageView

Однако, что ранее сделанное изображение не масштабируется, чтобы соответствовать представлению, вместо этого видно только его часть в исходном разрешении. Итак, как я могу установить 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]; 
} 

ответ

0

Решенный! с простой:

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

вместо:

self.overlayImage = self.imageView; 
0

В вашем примере кода я не могу увидеть настройки self.imageView.frame в любом месте. Если я правильно понял вопрос, это проблема.

+0

спасибо, я попытался self.imageView.frame = CGRectMake (0, 0, 200, 200); также self.overlayView.frame = CGRectMake (0, 0, 200, 200); ни одна из них не разрешила мою проблему, фотография сделана каждый раз в исходном размере. –

+0

Если настройка рамки вручную не помогает, это означает, что у вас есть [авто-макет на] (http://stackoverflow.com/questions/12716891/как к Disable-авто-макета по-умолчанию-для-Xcode-4-5). –

Смежные вопросы