简体   繁体   中英

How to fill the background image in a UIView without streching it

I'm trying to set the background image of a UIView with animated .gif's that I'm pulling form Giphy.

The problem I'm having is that the UIView is stretching the image. I want to fill the background so the height is 100% and have it centered. So left and right of the .gif would be cut off - but the image would be centered on the screen and not stretched.

Here's a screenshot of what it looks like now.

You can see it's fills height correct but it's shrinking the width of the image to match the UIView dimensions making it look stretched.

Here is the code I have now:

override func viewDidAppear(animated: Bool) {
    self.giphyBackground(Title: "dancing") { [weak self] (gifUrl) -> Void in
        let gifView = FLAnimatedImageView(frame: self!.giphy.frame)
        gifView.animatedImage = FLAnimatedImage(animatedGIFData: NSData(contentsOfURL: NSURL(string: gifUrl)!)!)
        self?.view.insertSubview(gifView, aboveSubview: self!.giphy)
    }
}

Any ideas

I think you should set the content mode of gifView to Aspect Fit , doing so will not stretch the image and will fully fill at-least one of the length either horizontally/ vertically.

Try setting

gifView.contentMode = UIViewContentMode.ScaleAspectFit

Also you can use scale AspectFill on gifView as

gifView.contentMode = UIViewContentMode.ScaleAspectFill

ScaleAspectFill will fill the entire gifView's frame but will also maintain the aspect ratio, doing so your image won't look stretched but it could happen that content either horizontally or vertically will go outside the frame(which you can clip).

You are definitely looking for the view's contentMode ScaleAspectFit . Simply add a line gifView.contentMode=UIViewContentMode.ScaleAspectFit

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

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