2016-08-30 3 views
2

UITabBar에서 탭 단추 중 하나의 배경색 만 변경하려면 어떻게해야합니까? Instragram의 오래된 tabbar 디자인 (pictured on top)을 다시 만들고 싶습니다. 중간에있는 "post picture"탭의 배경색은 다릅니다.특정 UITabBarItem의 배경을 변경하는 방법

그 다음으로, 색상을 아이콘 주위에 둥근 원으로 표시 할 수있는 방법이 있습니까? 아니면 그 시점에서 탭바의 역할을하도록 시뮬레이트 된 커스텀 툴바를 사용해야할까요?

+0

당신은'self.tabBar.tintColor = UIColor (빨간색 다르게 그때 또한 가운데 버튼의 색조를 변경할 수 선택한 이미지 – Janmenjaya

답변

2
let count = CGFloat(tabBar.items!.count) 
    let itemSize = CGSize(width: tabBar.frame.size.width/count, height: tabBar.frame.height) 

    for (index, _) in tabBar.items!.enumerate() { 
     if index == 2 { 
     let xPosition = itemSize.width * CGFloat(index) 
     let backgroundColor = UIView.init(frame: CGRect.init(x: xPosition, y: 0, width: itemSize.width, height: itemSize.height)) 
     backgroundColor.backgroundColor = UIColor.redColor() 
     tabBar.insertSubview(backgroundColor, atIndex: 1) 
     } 
    } 

enter image description here

나는 얼마 전에 비슷한 효과를 구현하고, 위의 코드는 중요한 부분입니다.

갱신 1 : 당신은 또한 특정 tabBarItem의 선택 배경 색상을 변경하려면

코드는 아래의 일을 할 것입니다. UITabBarController를 하위 클래스로 만들고 tabBar:didSelectItem 메서드를 재정의해야합니다.

override func tabBar(tabBar: UITabBar, didSelectItem item: UITabBarItem) { 
    let index: Int = tabBar.items!.indexOf(item)! 
    if index == 2 { 
    tabBar.selectionIndicatorImage = UIImage.fromColor(UIColor.greenColor(), size: CGSize.init(width: UIScreen.mainScreen().bounds.size.width/5, height: 49)) 
    } else { 
    tabBar.selectionIndicatorImage = UIImage.fromColor(UIColor.snpPaleblueColor(), size: CGSize.init(width: UIScreen.mainScreen().bounds.size.width/5, height: 49)) 
    } 
    tabBar.setNeedsDisplay() 
} 

static func fromColor(color: UIColor, size: CGSize) -> UIImage { 
    let rect = CGRect(x: 0, y: 0, width: size.width, height: size.height) 
    UIGraphicsBeginImageContext(rect.size) 
    let context = UIGraphicsGetCurrentContext() 
    CGContextSetFillColorWithColor(context, color.CGColor) 
    CGContextFillRect(context, rect) 
    let img = UIGraphicsGetImageFromCurrentImageContext() 
    UIGraphicsEndImageContext() 
    return img 
} 

갱신 2 :

당신이하는 tabBarItem의 이미지와 selectedImage 색상을 변경 imageWithRenderingMode: 예는 다음과 같습니다 UIImage의 방법을 사용하려면.

item.image = UIImage.init(named: "tabBarIcon-white").imageWithRenderingMode(.AlwaysOriginal) 
item.selectedImage = UIImage.init(named: "tabBarIcon-blue").imageWithRenderingMode(.AlwaysOriginal) 
+0

을 설정 TabBar의 선택된 이미지 속성을 사용할 수 있습니다 : 0/255을 , 녹색 : 150/255, 파란색 : 175/255, 알파 : 1.0) 'UIwhiteColor'와 비슷합니까? –

+0

제 대답을 업데이트 해주세요. – Benbobo

+0

안녕, 대답 주셔서 감사합니다,하지만 당신은 나를 이해하지 못했습니다. 나는 아이콘의 색깔을 바꾸는 것에 대해 이야기하고 있었다. 위의 예에서 탭바의 모든 아이콘은 흰색입니다. 특정 아이콘 (중간 아이콘처럼)을 나머지 아이콘과 어떻게 다른 색으로 설정할 수 있습니까? –