[英]How to set proper size of UIImageView
我已经从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];
}
在您的代码示例中,我看self.imageView.frame
在任何地方设置self.imageView.frame
。 如果我理解正确的问题,那就是问题。
解决了! 简单:
self.overlayImage.image = self.imageView.image;
代替:
self.overlayImage = self.imageView;
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.