Я загрузил образец кода «Использование 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];
}
спасибо, я попытался self.imageView.frame = CGRectMake (0, 0, 200, 200); также self.overlayView.frame = CGRectMake (0, 0, 200, 200); ни одна из них не разрешила мою проблему, фотография сделана каждый раз в исходном размере. –
Если настройка рамки вручную не помогает, это означает, что у вас есть [авто-макет на] (http://stackoverflow.com/questions/12716891/как к Disable-авто-макета по-умолчанию-для-Xcode-4-5). –