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

时间:2015-01-02 22:58:58

标签: ios facebook swift uiimage

我是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!) 
    }
}
...

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

It displays a blue rectangle instead of the user's avatar

我最初的想法:

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

2 个答案:

答案 0 :(得分:1)

您可以使用setBackgroundImage设置背景图片:forState:barMetrics :,或者您可以使用setImage,但您必须将图像的渲染模式显式设置为UIImageRenderingModeAlwaysOriginal(您所看到的是模板图像)。 / p>

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
}

答案 1 :(得分:0)

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

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