以编程方式更改时,UIImageView会丢失设置的宽高比

时间:2016-08-20 12:00:07

标签: ios swift uiimageview

当用户滑动时,我正在更新屏幕上的图像。因为这张图片来自网络,我实现了对UIImageview的扩展。

然而,当我加载新图像时,我为故事板中的图像设置的宽高比会丢失。

这是我用于UIImageView的扩展程序:

extension UIImageView {
    public func imageFromUrl(urlString: String) {
        if let url = NSURL(string: urlString) {
            let request = NSMutableURLRequest(URL: url)
            request.setValue("<YOUR_HEADER_VALUE>", forHTTPHeaderField: "<YOUR_HEADER_KEY>")
            NSURLSession.sharedSession().dataTaskWithRequest(request) {
                (data, response, error) in
                guard let data = data where error == nil else{
                    NSLog("Image download error: \(error)")
                    return
                }

                if let httpResponse = response as? NSHTTPURLResponse{
                    if httpResponse.statusCode > 400 {
                        let errorMsg = NSString(data: data, encoding: NSUTF8StringEncoding)
                        NSLog("Image download error, statusCode: \(httpResponse.statusCode), error: \(errorMsg!)")
                        return
                    }
                }

                dispatch_async(dispatch_get_main_queue(), {
                    NSLog("Image download success")
                    self.image = UIImage(data: data)
                })
                }.resume()
        }
    }
}

然后我用这段代码以编程方式更改UIImageView:

frontviewimage.imageFromUrl("https://upload.wikimedia.org/wikipedia/commons/6/66/Android_robot.png")

然后我尝试将内容模式更改为适合(下方),但似乎没有任何影响。

frontviewimage.contentMode = UIViewContentMode.ScaleAspectFit;
frontviewimage.imageFromUrl(frontImageViewArray[cardStackPosition])
编辑:我也尝试过:

frontviewimage.imageFromUrl(frontImageViewArray[cardStackPosition])
frontviewimage.contentMode = UIViewContentMode.ScaleAspectFit;
frontviewimage.clipsToBounds = true

以下是它应该是什么样子的示例:

enter image description here

但是在某些图片上会发生什么,它根本不会修改尺寸,图片最终将整个屏幕覆盖所有按钮:

enter image description here

我希望看到图像视图中的任何内容,但不知道如何做到这一点。

0 个答案:

没有答案