简体   繁体   English

如何设置UIImageView的适当大小

[英]How to set proper size of UIImageView

I've downloaded sample code "Using UIImagePickerController to Select Pictures and Take Photos" from developer.apple.com and basically I left it as it was. 我已经从developer.apple.com下载示例代码“使用UIImagePickerController选择图片并拍照”,基本上我将其保持原样。 I've added functionality, that if I have taken some picture, and I'm again in imagePickerController view to take another picture, it's overlaid with that previously taken picture. 我添加了功能,如果我已经拍摄了一些图片,然后再次进入imagePickerController视图拍摄另一张图片,则该图片会与之前拍摄的图片重叠。 There is also slider and I can change opacity of overlay, works great. 还有滑块,我可以更改覆盖的不透明度,效果很好。

However that previously taken picture is not scaled to fit the view, instead only part of it in original resolution can be seen. 但是,先前拍摄的照片并未按比例缩放以适合视图,而是只能看到其原始分辨率的一部分。 So how can I set overlayImage to proper size? 那么如何将overlayImage设置为适当的大小? I've tried using storyboards/nib files/add it programmatically but no success. 我尝试使用情节提要/ nib文件/以编程方式添加它,但没有成功。

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

Here's the method: 方法如下:

- (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];
}

In your code sample I can't see setting self.imageView.frame anywhere. 在您的代码示例中,我看self.imageView.frame在任何地方设置self.imageView.frame If I understand the question right, this is the problem. 如果我理解正确的问题,那就是问题。

Solved! 解决了! with simple: 简单:

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

instead of: 代替:

self.overlayImage = self.imageView;

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM