我是一名 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!)
}
}
...
问题:它显示一个蓝色矩形而不是用户的头像。
我最初的想法:
- userButton.image 根本不是正确的属性
- ...或者我需要转换图像
- ...或两者兼而有之?
最佳答案
您可以使用 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/