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!)
}
}
...
问题:它显示的是蓝色矩形而不是用户头像。
我的初步想法:
- 或者 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
}
您也可以使用图像作为背景:
userButton.setBackgroundImage(UIImage(named:"3.jpg"), forState: .Normal)
我是 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
}
您也可以使用图像作为背景:
userButton.setBackgroundImage(UIImage(named:"3.jpg"), forState: .Normal)