【问题标题】:how to set image in top avoiding space in UIimageView如何在顶部设置图像避免 UIimageView 中的空间
【发布时间】:2012-09-24 12:53:06
【问题描述】:

我有一个内容模式 Aspect Fit 大小为 220x155 的 UIImageView。我正在以不同的分辨率动态插入不同的图像,但都大于 UIImageView 的大小。由于内容模式设置为 Aspect Fit,图像会根据比例缩放以适合 UIImageView。

我的问题是,例如,如果 UIImageView 内的图像缩放到 220x100,我希望 UIImageView 也从 155 的高度缩小到 100 以避免元素之间的空间。

我该怎么做?

【问题讨论】:

    标签: iphone objective-c ios uiimageview aspect-fit


    【解决方案1】:

    我编写这个方法是为了在加载图像后获取图像视图的框架。 所以,我的要求和你的一样:

    1) 具有宽高比内容模式的图像视图 2)获取图像的确切帧(这样您可以重新定位图像视图)

    希望这会有所帮助:

    - (CGRect) getFrameOfImage:(AsyncImageView *) imgView
    {
        if(!imgView.loaded)
            return CGRectZero;
    
        CGSize imgSize      = imgView.image.size;
        CGSize frameSize    = imgView.frame.size;
    
        CGRect resultFrame;
    
        if(imgSize.width < frameSize.width && imgSize.height < frameSize.height)
        {
            resultFrame.size    = imgSize;
        }
        else
        {
            float widthRatio  = imgSize.width  / frameSize.width;
            float heightRatio = imgSize.height / frameSize.height;
    
            float maxRatio = MAX (widthRatio , heightRatio);
            NSLog(@"widthRatio = %.2f , heightRatio = %.2f , maxRatio = %.2f" , widthRatio , heightRatio , maxRatio);
    
            resultFrame.size = CGSizeMake(imgSize.width / maxRatio, imgSize.height / maxRatio);
        }
    
        resultFrame.origin  = CGPointMake(imgView.center.x - resultFrame.size.width/2 , imgView.center.y - resultFrame.size.height/2);
    
        return resultFrame;
    }
    

    我在这里使用AsyncImageView,但它与UIImageView 一样好用。要记住的重要一点是在加载图像后调用此方法。

    干杯!

    【讨论】:

    • 非常感谢@George。这是一个非常好的答案,我已将结果框的 y 更改为静态文本。
    【解决方案2】:

    很简单,只需要获取图片的实际尺寸,就可以了

    UIImage *image = [UIImage imageName:@""];
    

    那么你只需要设置框架 喜欢:-

    imageView.frame = CGRectMake(0.0, 0.0, image.size.width, image.size.height);
    

    希望对你有所帮助。

    【讨论】:

    • 谢谢,但这对我没有帮助,因为图像很大,而且我已将属性设置为宽高比,所以尺寸太大了
    • 您可以将一个固定尺寸作为常数并进行比较,如果超过该固定尺寸,则应减小它并使尺寸与该固定尺寸相同。希望对你有帮助..
    【解决方案3】:

    一旦将 imageview 的图像设置为新图像(并因此缩放),您就可以获取 imageview 内的图像高度 (imageview.image.size.height) 并相应地设置 imageview 的高度(帧)。

    【讨论】:

    • 另外,您可能应该在 layoutSubviews 方法中设置您的视图,并在动态调整图像视图的高度后调用 [self setNeedsLayout]
    猜你喜欢
    • 2020-04-15
    • 1970-01-01
    • 1970-01-01
    • 2016-09-15
    • 1970-01-01
    • 2012-06-15
    • 2013-03-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多