Iphone UIImage在调整大小后居中

Iphone UIImage在调整大小后居中,iphone,uiimageview,uiimage,Iphone,Uiimageview,Uiimage,iPhone应用程序的代码: +(UIImage *)imageWithImage:(UIImage *)image scaledToSize:(CGSize)newSize { UIGraphicsBeginImageContext(newSize); [image drawInRect:CGRectMake(0, 0, newSize.width, newSize.height)]; UIImage *newImage = UIGraphicsGetImageFromCurren

iPhone应用程序的代码:

+(UIImage *)imageWithImage:(UIImage *)image scaledToSize:(CGSize)newSize {
  UIGraphicsBeginImageContext(newSize);
  [image drawInRect:CGRectMake(0, 0, newSize.width, newSize.height)];
  UIImage *newImage = UIGraphicsGetImageFromCurrentImageContext();    
  UIGraphicsEndImageContext();
  return newImage;
}

CGSize sz = CGSizeMake( 200, 20 );
imageView.contentMode = UIViewContentModeScaleAspectFit;
imageView.image = [Class imageWithImage: [UIImage imageNamed:@"image.png"] scaledToSize: sz];

调整大小的图像在imageView中居中,我希望它左对齐(最好是左上角)。我怎样才能做到这一点?感谢您的帮助。

将内容模式更改为:

imageView.contentMode = UIViewContentModeTopLeft;

将contentMode更改为:

imageView.contentMode = UIViewContentModeTopLeft;

如果您已将imageView设置为内容模式
UIViewContentModeScaleAspectFit
,iOS将适合您的图像,但如果尺寸小于您的宽度,iOS也会在左右两侧引入透明条

解决方案是让iOS适应图像,然后计算出新的宽度,并用新的宽度设置imageView的宽度

    CGSize imgSize = contentProvider.image.size;
    CGRect frame = contentProviderViewOriginalFrame;

    if (imgSize.width > 0 && imgSize.height > 0)
    {
        double aspectRatio = (imgSize.width * 1.0) / (imgSize.height * 1.0);
        CGFloat newWidth = frame.size.height * aspectRatio;

        if (newWidth < frame.size.width)
        {
            frame.size.width = newWidth;
        }
    }
CGSize imgSize=contentProvider.image.size;
CGRect frame=contentProviderViewOriginalFrame;
如果(imgSize.width>0&&imgSize.height>0)
{
双aspectRatio=(imgSize.width*1.0)/(imgSize.height*1.0);
CGFloat newWidth=frame.size.height*aspectRatio;
if(新宽度<帧大小宽度)
{
frame.size.width=新宽度;
}
}

如果您已将imageView设置为内容模式
UIViewContentModeScaleSpectFit
,iOS将适合您的图像,但如果尺寸小于您的宽度,iOS也会在左右两侧引入透明条

解决方案是让iOS适应图像,然后计算出新的宽度,并用新的宽度设置imageView的宽度

    CGSize imgSize = contentProvider.image.size;
    CGRect frame = contentProviderViewOriginalFrame;

    if (imgSize.width > 0 && imgSize.height > 0)
    {
        double aspectRatio = (imgSize.width * 1.0) / (imgSize.height * 1.0);
        CGFloat newWidth = frame.size.height * aspectRatio;

        if (newWidth < frame.size.width)
        {
            frame.size.width = newWidth;
        }
    }
CGSize imgSize=contentProvider.image.size;
CGRect frame=contentProviderViewOriginalFrame;
如果(imgSize.width>0&&imgSize.height>0)
{
双aspectRatio=(imgSize.width*1.0)/(imgSize.height*1.0);
CGFloat newWidth=frame.size.height*aspectRatio;
if(新宽度<帧大小宽度)
{
frame.size.width=新宽度;
}
}

但是图像将不适合您的图像视图。。。。我认为您不能仅通过设置contentMode就从左上角开始创建图像AspectFit。我认为您不能同时使用两种内容模式。只有一种是允许使用UIViewContentModeTopLeft或UIViewContentModeScaleAspectFit。但是,这样图像将无法与您的图像视图相适应。。。。我认为您不能仅通过设置contentMode就从左上角开始创建图像AspectFit。我认为您不能同时使用两种内容模式,只有一种是允许使用UIViewContentModeTopLeft或UIViewContentModeScaleAspectFit。