how to set image in top avoiding space in UIimageView

前端 未结 3 1889
孤城傲影
孤城傲影 2021-01-13 21:00

I\'ve an UIImageView with content mode Aspect Fit of size 220x155. I\'m dynamically inserting different images in different resolutions, but all larger than the size of the

相关标签:
3条回答
  • 2021-01-13 21:28

    Its very simple, you just need to get image actual size, which can be done by

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

    then you just need to set frame Like :-

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

    Hope this helps you.

    0 讨论(0)
  • 2021-01-13 21:31

    I wrote this method to get me the frame of the image view once it loaded an image. So , the requirements for me were the same as in your case:

    1) image view with aspect fit content mode 2) get the exact frame of the image ( this way you can re-position the image view )

    Hope this helps:

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

    I am using here AsyncImageView but it will work just as good with UIImageView. The important thing to remember is to call this method AFTER the image was loaded.

    Cheers!

    0 讨论(0)
  • 2021-01-13 21:39

    Once the imageview's image is set to the new image (and thus scaled) you can get the height of the image inside the imageview (imageview.image.size.height) and set the imageview's height (frame) accordingly.

    0 讨论(0)
提交回复
热议问题