【问题标题】:How to fill the background image in a UIView without streching it如何在不拉伸的情况下填充 UIView 中的背景图像
【发布时间】:2015-08-07 14:42:41
【问题描述】:

我正在尝试使用我从 Giphy 中提取的动画 .gif 设置 UIView 的背景图像。

我遇到的问题是 UIView 正在拉伸图像。我想填充背景,使高度为 100% 并使其居中。所以 .gif 的左右两边会被截断 - 但图像会在屏幕上居中而不是拉伸。

Here's 现在的截图。

您可以看到它的填充高度正确,但它正在缩小图像的宽度以匹配 UIView 尺寸,使其看起来被拉伸。

这是我现在的代码:

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)
    }
}

任何想法

【问题讨论】:

  • 你可以试试gifView.contentMode = UIViewContentMode.ScaleAspectFill;gifView.contentMode = UIViewContentMode.ScaleAspectFit;看看你更喜欢哪一个。

标签: ios swift uiview


【解决方案1】:

您肯定在寻找视图的 contentMode ScaleAspectFit。只需添加一行gifView.contentMode=UIViewContentMode.ScaleAspectFit

【讨论】:

    【解决方案2】:

    我认为您应该将gifView 的内容模式设置为Aspect Fit,这样做不会拉伸图像并且会在水平/垂直方向上完全填充至少一个长度。

    尝试设置

    gifView.contentMode = UIViewContentMode.ScaleAspectFit
    

    您也可以在gifView 上使用scale AspectFill 作为

    gifView.contentMode = UIViewContentMode.ScaleAspectFill
    

    ScaleAspectFill 将填充整个 gifView 的框架,但也会保持纵横比,这样您的图像不会看起来被拉伸,但可能会发生水平或垂直的内容会超出框架(您可以剪辑) .

    【讨论】:

    • 太棒了,谢谢!!这正是我需要的:gifView.contentMode = UIViewContentMode.ScaleAspectFil
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多