Swift UIImage扩展无法正常工作

Swift UIImage扩展无法正常工作,swift,uiimage,extension-methods,Swift,Uiimage,Extension Methods,因此,我试图在我的项目中为tabBarItems设置自定义图标(因为默认选项非常有限) 显然,图标不会自动调整为30 x 30,因为它们需要,所以我一直在尝试使用UIImage扩展手动调整。我只使用过一两次扩展,我真正想做的就是转换成Swift 3。我的扩展尝试如下: extension UIImage { func scaledToSize(size: CGSize) -> UIImage { UIGraphicsBeginImageContextWithOpt

因此,我试图在我的项目中为tabBarItems设置自定义图标(因为默认选项非常有限)

显然,图标不会自动调整为30 x 30,因为它们需要,所以我一直在尝试使用UIImage扩展手动调整。我只使用过一两次扩展,我真正想做的就是转换成Swift 3。我的扩展尝试如下:

extension UIImage {

    func scaledToSize(size: CGSize) -> UIImage {
        UIGraphicsBeginImageContextWithOptions(size, false, 0.0)
        images?[0].draw(in: CGRect(x: 0, y: 0, width: size.width, height: size.height))
        let image = UIGraphicsGetImageFromCurrentImageContext()
        UIGraphicsEndImageContext()
        return image!
    }

}
如果不清楚,这个扩展应该像这样使用,以实现我的目的:

self.tabBarItem.image = tabBarItemImage?.scaledToSize(size: CGSize(width: 30, height: 30))
我知道这不是目前最优雅的解决方案,但我认为它会起作用,但事实并非如此。我已经尝试过用一个简单的imageView来使用它,但是它也不能用,所以我不认为特别用tabBarItems来使用这种技术是一个问题

如果有人能指出我做错了什么,或者引导我走上正确的方向,我将不胜感激

试试下面的分机

extension UIImageView {
    func scaledToSize(size: CGSize){
        UIGraphicsBeginImageContextWithOptions(size, false, 0.0)
        self.image!.draw(in: CGRect(x: 0, y: 0, width: size.width, height: size.height))
        let imageed = UIGraphicsGetImageFromCurrentImageContext()
        UIGraphicsEndImageContext()
        self.image = imageed
    }
}

诚实、愚蠢的问题-您设置了正确的contentMode,对吗?如果是这样的话,那么唯一吸引我眼球的就是**图像?[0]。draw“。不确定你是否应该在“一张”中这样做“UIImage扩展。@dfd您指的是什么内容模式?另外,你能详细说明你的第二个评论吗?我一次只将更改应用于一张照片,因此我认为只使用array.UIImage.contentMode==中的第一张图像应该是安全的,以使图像属性符合您的要求。这几乎是使用UIImageView所做的基本工作。(我希望您的回答是正确的,只是要确定一下。)我的第二条评论是关于如何编写扩展的。如果您正在为UIImage扩展编码,它几乎就像子类化一样——您不能引用**image[0]”,因为UIImageView的image属性是单数的(我可能在UIAbbarView或其他类似的东西中会这样)我没有改变图像内容模式,需要吗?另外,我想我理解你对扩展部分的看法,但问题是,在UIImage扩展中,它的属性是“images”,但没有“image”这就是为什么我必须使用第一个索引符号使它单数,这样我才能修改它。我对UIImageView部分也有点不确定,因为我只是在修改tabBarItem的image属性,所以我不需要UIImageView。对不起,如果我完全误解了你的信息,谢谢你到目前为止的洞察力!