Ios 使用UIViewContentModeScaleSpectFit在UIImageView中调整图像

Ios 使用UIViewContentModeScaleSpectFit在UIImageView中调整图像,ios,objective-c,uiimageview,uiimage,Ios,Objective C,Uiimageview,Uiimage,我在UIImageView中遇到了一个非常奇怪的问题,我试图将一个图像(通过拍摄当前视图的屏幕截图创建)设置为一个内容模式为UIViewContentModeScaleSpectFit的ImageView 当我在xib文件中设置interface builder创建的图像时,或者当我设置由[UIImage ImageName:]创建的图像时,它工作正常。他们都能很好地使用UIViewContentModeScaleSpectFit 但是,当我拍摄视图的快照并将图像设置为图像视图时,图像不适合UI

我在UIImageView中遇到了一个非常奇怪的问题,我试图将一个图像(通过拍摄当前视图的屏幕截图创建)设置为一个内容模式为UIViewContentModeScaleSpectFit的ImageView

当我在xib文件中设置interface builder创建的图像时,或者当我设置由[UIImage ImageName:]创建的图像时,它工作正常。他们都能很好地使用UIViewContentModeScaleSpectFit

但是,当我拍摄视图的快照并将图像设置为图像视图时,图像不适合UIImageView。我已经尝试了我在这里找到的所有解决方案,比如.ClipsToBound=是的,但它们根本不起作用。我现在真的很困惑

以下是我拍摄屏幕截图并创建UIImage时的代码:

- (UIImage *)screenshotWithRect:(CGRect)captureRect
{
    CGFloat scale = [[UIScreen mainScreen] scale];
    UIImage *screenshot;

    UIGraphicsBeginImageContextWithOptions(self.frame.size, NO, scale);
    CGContextClipToRect (UIGraphicsGetCurrentContext(),captureRect);
    {
        if(UIGraphicsGetCurrentContext() == nil)
        {
            NSLog(@"UIGraphicsGetCurrentContext is nil. You may have a UIView (%@) with no really frame (%@)", [self class], NSStringFromCGRect(self.frame));
        }
        else
        {
            [self.layer renderInContext:UIGraphicsGetCurrentContext()];

            screenshot = UIGraphicsGetImageFromCurrentImageContext();
        }
    }
    UIGraphicsEndImageContext();

    return screenshot;
}
当我将图像设置为图像视图时

UIImage* snap = [[UIImage alloc] init];
// start snap shot
UIView* superView = [self.view superview];
CGRect cutRect = [superView convertRect:self.cutView.frame fromView:_viewToCut];
snap = [superView screenshotWithRect:cutRect];
[self.view addSubview:self.editCutFrameView];
// end snap shot -> show edit view
[self.editCutFrameView setImage:snap];
下面是一张图片,比较两个结果:

非常感谢你的帮助


更新:正如@Saheb Roy提到的大小,我检查了图像大小,它大约是400x500px,缩略图。png的大小是512x512px,所以我认为它与图像的大小无关。

这是因为在第二种情况下,快照图像本身就是您所看到的大小。因此,图像不会相应地拉伸或拟合。 早期的图像适合屏幕,因为图像比
imageview
大,但与图像的比例不同或相同


但是它不适合
图像视图
,图像本身大小太大,即比图像视图小,因此它不适合边界。

嗨,谢谢你的回答,但我检查了图像,它没有那么小,如果它真的是一个小尺寸的图像,那么它应该在图像视图的中心。但正如您所看到的,它不在中心。请回复imageview的大小和图像的大小