UIImage 显示蓝色矩形而不是 JPEG 图像

UIImage displays blue rectangle instead of JPEG image

我是 iOS、iOS 开发和 Swift 新手。

我想要一个带图标的条形按钮。它应该显示用户的 Facebook 头像。来自Facebook的头像为JPEG格式。

这是我目前拥有的:

class MyViewController: UIViewController {

@IBOutlet weak var userButton: UIBarButtonItem!

var user: User?

override func viewDidLoad() {
    super.viewDidLoad()

    self.user = UserClient.sharedInstance.user
    println(self.user?.pictureUrl)

    if let pictureUrl = self.user?.pictureUrl {

        let url = NSURL(string: pictureUrl)
        let data = NSData(contentsOfURL: url!)
        userButton.image = UIImage(data: data!) 
    }
}
...

问题:它显示的是蓝色矩形而不是用户头像。

我的初步想法:

  1. 或者 userButton.image 根本不正确 属性
  2. ...或者我需要转换图像
  3. ...或两者兼而有之?

您可以使用 setBackgroundImage:forState:barMetrics: 来设置背景图片,或者您可以使用 setImage,但您必须将图片的渲染模式明确设置为 UIImageRenderingModeAlwaysOriginal(您看到的是模板图片) .

if let pictureUrl = self.user?.pictureUrl {

    let url = NSURL(string: pictureUrl)
    let data = NSData(contentsOfURL: url!)
    let img = UIImage(data: data!)
    let originalImage = img!.imageWithRenderingMode(.AlwaysOriginal)
    userButton.image =  originalImage
}

您也可以使用图像作为背景:

userButton.setBackgroundImage(UIImage(named:"3.jpg"), forState: .Normal)