从一个UIImage问题添加Tabbar项目图像

时间:2017-01-06 09:31:45

标签: ios swift uiimage uitabbaritem

我是斯威夫特的新手。

我有一个问题。

当我从一个UIImage添加Tabbar项目图像时,没有显示任何内容。

虽然,不在Tabbar项目中,图像显示良好,从资产加载到标签栏项目的图像效果很好。

我已经调整了那个东西,而不是在标签栏中调整了图像加载大小。

所以,我很困惑如何做到这一点。

这是我的代码

这是来自Facebook个人资料图片的负载

FBSDKGraphRequest(graphPath: "/me", parameters: ["fields": "email, id, name, picture"]).start { (connection, result, err) in

        if err != nil {
            print("FBLogin Error: \(err)")
            return
        }
        print(result!)

        let dd = result as! [String : AnyObject]

        let test = (dd["picture"]!["data"]!! as! [String: AnyObject])["url"]

        let url = URL(string: test as! String)
        let data_picture = try? Data(contentsOf: url!)
        var temp_img = UIImage()
        temp_img = UIImage(data: data_picture!)!

        temp_tabbar_profile = self.resizeImage(image: temp_img, targetSize: CGSize(width: 30, height: 30))

temp_tabbar_profile是UIImage

这是调整代码。

func resizeImage(image: UIImage, targetSize: CGSize) -> UIImage {
    let size = image.size

    let widthRatio  = targetSize.width  / image.size.width
    let heightRatio = targetSize.height / image.size.height

    // Figure out what our orientation is, and use that to form the rectangle
    var newSize: CGSize
    if(widthRatio > heightRatio) {
        newSize = CGSize(width: size.width * heightRatio, height: size.height * heightRatio)
    } else {
        newSize = CGSize(width: size.width * widthRatio,  height: size.height * widthRatio)
    }

    // This is the rect that we've calculated out and this is what is actually used below
    let rect = CGRect(x: 0, y: 0, width: newSize.width, height: newSize.height)

    // Actually do the resizing to the rect using the ImageContext stuff
    UIGraphicsBeginImageContextWithOptions(newSize, false, 1.0)
    image.draw(in: rect)
    let newImage = UIGraphicsGetImageFromCurrentImageContext()
    UIGraphicsEndImageContext()

    return newImage!
}

这是设置标签栏图像代码

 override func viewDidLoad() {
    super.viewDidLoad()
    let tabBarItems = tabBar.items! as [UITabBarItem]

    tabBarItems[0].selectedImage = temp_tabbar_profile
    tabBarItems[0].image = temp_tabbar_profile
    tabBarItems[0].title = ""

}

当我运行app时,只出现了灰色图片。 当我在其他视图的图像view.image中加载此temp_tabbar_profile时, 装好了!!!

我不知道出了什么问题。

感谢您阅读我的问题。

1 个答案:

答案 0 :(得分:1)

您应该使用tabBarItems[0].image = temp_tabbar_profile.withRenderingMode(.alwaysOriginal)。或者UITabBar将以抽象的方式显示您的图像。