从取消选中的选项卡中删除蒙版UITabBarItem Swift

我正在试图与2 UITabBarItems实现一个UITabBarItems 。 我在故事板中添加了TabBarController。 我几乎做到了,但是我仍然被两个重要问题所阻止:

1)这是标签栏的外观: 在这里输入图像说明

请忽略橙色button,这不是一个tabItem。 所以我把两个tabItems,我想保留两个选项卡的白色图像,即使他们中的一个被选中。 我用tintColorbarTintColor检查了很多次,没有成功。

另外我试图在ViewController中设置tabBarItem:

 override func awakeFromNib() { super.awakeFromNib() let imgHome = UIImage(named: "btnHome")?.imageWithRenderingMode(UIImageRenderingMode.AlwaysOriginal) let imgProfile = UIImage(named: "btnProfile")?.imageWithRenderingMode(UIImageRenderingMode.AlwaysOriginal) let imgSelectedTab = UIImage(named: "selectedTab_imgBackground")?.imageWithRenderingMode(UIImageRenderingMode.AlwaysOriginal) tabBarItem = UITabBarItem(title: nil, image: imgProfile, selectedImage: imgSelectedTab) } 

但没有成功。 在这个问题上的任何想法?

2)第二个问题是关于UITabBarItem类的selectedImage属性。 图像的width不符合标签。 我改变了设备之间,并为每个设备选定的图像是在另一个选项卡上,或不符合当前选项卡(我find了一个解决scheme:具有相同的图像,但不同宽度的每个设备,但肯定这是不是一个好的解决scheme

第二个选项卡第一个标签被选中

任何forms的帮助都可以! 非常感谢

您需要将渲染模式更改为UIImageRenderingModeAlwaysOriginal而不是自动。

以下是我如何pipe理这两个问题的完整示例: https //github.com/AndreiBoariu/TabBarController

对于第一个问题 ,我解决forUITabBarController类中使用这个for循环:

 for item in tabBar.items as! [UITabBarItem] { if let image = item.image { item.image = image.imageWithColor(UIColor.whiteColor()).imageWithRenderingMode(.AlwaysOriginal) } } 

这里是UIImage的扩展

 public extension UIImage { func imageWithColor(tintColor: UIColor) -> UIImage { UIGraphicsBeginImageContextWithOptions(self.size, false, self.scale) let context = UIGraphicsGetCurrentContext() as CGContextRef CGContextTranslateCTM(context, 0, self.size.height) CGContextScaleCTM(context, 1.0, -1.0); CGContextSetBlendMode(context, kCGBlendModeNormal) let rect = CGRectMake(0, 0, self.size.width, self.size.height) as CGRect CGContextClipToMask(context, rect, self.CGImage) tintColor.setFill() CGContextFillRect(context, rect) let newImage = UIGraphicsGetImageFromCurrentImageContext() as UIImage UIGraphicsEndImageContext() return newImage } } 

对于第二个问题 ,请检查来自github的代码;)