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

标签 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. ...或两者兼而有之?

最佳答案

您可以使用 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
}

关于ios - UIImage 显示蓝色矩形而不是 JPEG 图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27749689/

相关文章:

iphone - xcode 自定义 ttf 字体不工作

android - 如何使用 Facebook 应用程序从另一个 Android 应用程序发送照片

ios - 快速导入模块

iphone - 带有可编辑 ABPersonViewController 的 ABPeoplePickerNavigationController

ios - 在 Swift 中解析 JSON 中的嵌套数组

facebook - 调整 Facebook Connect 登录弹出窗口的大小

android - (Android)(Facebook) 多个 ProfilePictureViews 导致 OutOfMemoryError

swift - 使用默认值参数覆盖函数时,如何保持默认值与父类(super class)相同?

ios - 是否可以快速从 CoreData 中获取数组?

ios - 数组在单例中变得零