2017-02-04 6 views
0

스토리 보드에 UITabbar 컨트롤러를 만들고 5 탭바 버튼을 만들었습니다.스토리 보드에 추가 된 탭바 사용자 정의 방법

하지만 탭바의 이미지 크기와 색상을 제어 할 수 없습니다. 그리고 기본 색상을 사용하지 않고 PNG 파일을 사용하여 버튼 색상과 모양을 사용자 정의하고 싶습니다.

하지만 아래 코드는 tabbar tintcolor를 제외하고는 제대로 작동하지 않습니다.

class MainView: UITabBarController { 

override func viewDidLoad() { 
    super.viewDidLoad() 

    tabBar.barTintColor = UIColor.white 

} 

override func tabBar(_ tabBar: UITabBar, didSelect item: UITabBarItem) { 
    switch item.tag{ 
    case 0: 
     print(item.tag) 
     UITabBar.setItems(item[0]) = UITabBarItem(title: "Magzine", image: UIImage(named: "exhibiter.png"), selectedImage: UIImage(named: "exhibiterselected.png")) 
    case 1: 
     print("") 
    case 2: 
     print("") 
    case 3: 
     print("") 
    case 4: 
     print("") 
    default: 
     break 
    } 
} 

override func viewWillAppear(_ animated: Bool) { 
    UIApplication.shared.isStatusBarHidden = false 
} 

override func didReceiveMemoryWarning() { 
    super.didReceiveMemoryWarning() 
} 

}

+0

처럼 사용할 수 있습니다 설정 한 다음 이미지가 원산지 확인 기준이 대답 모드를 렌더링 http://stackoverflow.com/a/38560183/6433023 –

+0

스토리 보드를 사용하여 선택한 항목이나 선택하지 않은 항목 등의 탭 표시 줄 항목을 관리 할 수 ​​있습니다. 생각해 내다! 사용자 정의 이미지를 탭 표시 줄 항목으로 설정하려면? 이미지에는 접미사가 포함되어야합니다. 어떤 시스템에서 필요합니다. – Mannopson

답변

3

당신이 당신의 TabBar의 항목으로 스토리 보드에서 기본 선택 이미지를 모두 설정이

class TabBarViewController: UITabBarController { 

    required init(coder aDecoder: NSCoder) { 

    super.init(coder: aDecoder)! 

override func viewDidLoad() { 
    super.viewDidLoad() 

    UITabBar.appearance().tintColor = UIColor(red: 254/255.0, green: 105/255.0, blue: 51/255.0, alpha: 100.0) 

    for i in 0 ..< self.tabBar.items!.count { 

     switch i { 

     case 0: 

      tabBar.items?[0].title = "Home" 
      let firstTab = self.tabBar.items![i] as UITabBarItem 
      learnTab.image = UIImage(named: "Homedeselected")!.imageWithRenderingMode(UIImageRenderingMode.AlwaysOriginal) 
      firstTab.selectedImage = UIImage(named: "Homedeselected")!.imageWithRenderingMode(UIImageRenderingMode.AlwaysOriginal) 
      firstTab.imageInsets = UIEdgeInsetsMake(-1, 0, 1, 0) 
      firstTab.titlePositionAdjustment = UIOffsetMake(0, -4) 


     case 1: 

      tabBar.items?[1].title = "Request" 
      let secondTab = self.tabBar.items![i] as UITabBarItem 
      secondTab.image = UIImage(named: "RequestDeselected")!.imageWithRenderingMode(UIImageRenderingMode.AlwaysOriginal) 
      secondTab.selectedImage = UIImage(named: "Requestselected")!.imageWithRenderingMode(UIImageRenderingMode.AlwaysOriginal) 
      secondTab.imageInsets = UIEdgeInsetsMake(-1, 0, 1, 0) 
      secondTab.titlePositionAdjustment = UIOffsetMake(0, -4) 

     case 2: 

      tabBar.items?[2].title = "Renew" 
      let thirdTab = self.tabBar.items![i] as UITabBarItem 
      thirdTab.image = UIImage(named: "RenewDeSelected")!.imageWithRenderingMode(UIImageRenderingMode.AlwaysOriginal) 
      thirdTab.selectedImage = UIImage(named: "RenewSelected")!.imageWithRenderingMode(UIImageRenderingMode.AlwaysOriginal) 
      thirdTab.imageInsets = UIEdgeInsetsMake(-1, 0, 1, 0) 
      thirdTab.titlePositionAdjustment = UIOffsetMake(0, -4) 

     case 3: 

      tabBar.items?[3].title = "ReSell" 
      let forthTab = self.tabBar.items![i] as UITabBarItem 
      forthTab.image = UIImage(named: "ReSellDeSelected")!.imageWithRenderingMode(UIImageRenderingMode.AlwaysOriginal) 
      forthTab.selectedImage = UIImage(named: "ReSellSelected")!.imageWithRenderingMode(UIImageRenderingMode.AlwaysOriginal) 
      forthTab.imageInsets = UIEdgeInsetsMake(-1, 0, 1, 0) 
      forthTab.titlePositionAdjustment = UIOffsetMake(0, -4) 

     case 4: 

      tabBar.items?[4].title = "ReCycle" 
      let fifthTab = self.tabBar.items![i] as UITabBarItem 
      fifthTab.image = UIImage(named: "ReCycleDeSelected")!.imageWithRenderingMode(UIImageRenderingMode.AlwaysOriginal) 
      fifthTab.selectedImage = UIImage(named: "ReCycleSelected")!.imageWithRenderingMode(UIImageRenderingMode.AlwaysOriginal) 
      fifthTab.imageInsets = UIEdgeInsetsMake(-2, 0, 2, 0) 
      fifthTab.titlePositionAdjustment = UIOffsetMake(0, -5) 

     default: 
      break 
     } 
    } 
} 

override func tabBar(tabBar: UITabBar, didSelectItem item: UITabBarItem) { 




    } 

} 
+0

고마워요! 그러나 "ImageInsets"를 사용하기 위해 버튼 크기는 터치 할 때마다 변경됩니다. 이 문제를 해결할 방법을 알고 있습니까? –

+0

이것은 버튼 크기가 아니라 이미지 크기입니다. 필요한 모든 PNG 이미지를 올바르게 가져 왔는지 확인하십시오. iOS가 "[email protected]"또는 "[email protected]"과 같은 이미지 이름을 인식 할 수 있기 때문입니다. 행운을 빕니다 – Mannopson