2017-02-04 11 views
1

각 탭의 "색조"를 변경하고 싶습니다. 그러나 아래 코드는 전혀 작동하지 않습니다.tintColor를 사용자 지정하고 UITabBarItem의 크기를 조정하는 방법

그리고 단추 이미지를 추가하고 "UIEdgeInsetsMake"를 사용하여 크기를 조정하려고합니다. 버튼을 터치 할 때마다 버튼이 이상하게 크기가 조정됩니다. 나는 이유를 모른다.

그리고 스위프트 (3)을 사용하고

class MainView: UITabBarController { 

    var TabFirst = UITabBarItem() 
    var TabSecond = UITabBarItem() 
    var TabThird = UITabBarItem() 
    var TabForth = UITabBarItem() 
    var TabFifth = UITabBarItem() 

    override func viewDidLoad() { 
     super.viewDidLoad() 

     tabBar.barTintColor = UIColor.white 

     TabFirst = self.tabBar.items![0] 
     TabFirst.image = UIImage(named: "btn_1-1")!//.withRenderingMode(UIImageRenderingMode.alwaysOriginal) 
     TabFirst.imageInsets = UIEdgeInsetsMake(12, 10, 11, 11) 
     tabBar.items?[0].title = "length" 

     TabSecond = self.tabBar.items![1] 
     TabSecond.image = UIImage(named: "btn_2-1")!//.withRenderingMode(UIImageRenderingMode.alwaysOriginal) 
     tabBar.items?[1].title = "length" 

     TabThird = self.tabBar.items![2] 
     TabThird.image = UIImage(named: "btn_3-1")!//.withRenderingMode(UIImageRenderingMode.alwaysOriginal) 
     tabBar.items?[2].title = "length" 

     TabForth = self.tabBar.items![3] 
     TabForth.image = UIImage(named: "btn_4-1")!//.withRenderingMode(UIImageRenderingMode.alwaysOriginal) 
     tabBar.items?[3].title = "length" 

     TabFifth = self.tabBar.items![4] 
     TabFifth.image = UIImage(named: "btn_5-1")!//.withRenderingMode(UIImageRenderingMode.alwaysOriginal) 
     tabBar.items?[4].title = "length" 

    } 



    override func tabBar(_ tabBar: UITabBar, didSelect item: UITabBarItem) { 

     switch item.tag{ 
     case 0: 
      print("FirstTab") 
      UITabBar.appearance().tintColor = UIColor(red: 255/255.0, green: 67/255.0, blue: 99/255.0, alpha: 1.0) 

     case 1: 
      print("SecondTab") 
      UITabBar.appearance().tintColor = UIColor(red: 237/255.0, green: 193/255.0, blue: 53/255.0, alpha: 1.0) 

     case 2: 
      print("ThirdTab") 
      UITabBar.appearance().tintColor = UIColor(red: 70/255.0, green: 183/255.0, blue: 128/255.0, alpha: 1.0) 

     case 3: 
      print("ForthTab") 
      UITabBar.appearance().tintColor = UIColor(red: 12/255.0, green: 195/255.0, blue: 199/255.0, alpha: 1.0) 

     case 4: 
      print("FifthTab") 
      UITabBar.appearance().tintColor = UIColor(red: 105/255.0, green: 72/255.0, blue: 170/255.0, alpha: 1.0) 

     default: 
      break 
     } 
    } 

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

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

} 
+0

http://stackoverflow.com/questions/27890936/changing-selectedimage-on-uitabbaritem-in-swift 대신에 선택한 이미지를 변경해야하지만 색조를 원할 경우 : http://stackoverflow.com/questions/ 20783193/setting-tint-color-selected-tab-in-uitabbar –

+0

@Sneak 이미지를 바꾸는 방법이 아니라 TintColor 만 바꾸고 싶습니다. 그리고 프로그래밍 코드를 사용하여이를 변경할 수있는 방법이 있습니까? 스토리 보드 메뉴를 사용하지 않습니까? 그리고 나는 RESIZING 문제를 해결하기를 정말로 원합니다. –

답변

0

편집 : 또한

switch item.tag{ 

, 당신은에 스위치를하고있다 : 당신은 휴식 스위치 문에가 누락 태그를 사용하면 코드에서 태그를 추가 한 곳이 표시되지 않습니다. 대신 항목의 색인을 가져와야합니다.

NSInteger indexOfTab = [[self.tabBar items] indexOfObject:item]; 

는 그런 다음 indexOfTab의 스위치 문을 : 나는 스위프트 코더 아니다

이 당신에게 힌트를 제공하기 위해 오브젝티브 C에서 그것을 할 방법이다.

Here is the Swift version.

:

override func tabBar(_ tabBar: UITabBar, didSelect item: UITabBarItem) { 
    print("the selected index is : \(tabBar.items.index(of: item))") 
} 

개별적으로 "하려면 tintColor"를 변경하려는 경우, 사용자 정의 selectedImage 대신 설정해야합니다.

조심 기본적으로

는 비 선택하고 선택된 이미지가 자동으로 소스 이미지의 알파 값으로부터 생성된다. 시스템 의 색칠을 방지하려면 alwaysOriginal로 이미지를 제공하십시오.

documentation까지는 UITabBarItem에 "tintColor"속성이 없습니다.

그러나 UITabBar에는 tintColor property이 있습니다. 그러나 이것은 이 아니며은 개별적으로 설정됩니다.

색조 색상

당신은 색조 (barTintColor) 필드를 사용하여 바 배경에 대한 사용자 정의 색조 색상을 지정할 수 있습니다. 기본 배경 색조는 흰색입니다.

해당 색조를 선택하면 이미지 색조 (selectedImageTintColor) 필드를 사용하여 항목의 색조 색을 지정할 수 있습니다. 기본적으로 그 색은 파랑입니다.

크기 조정 방법에 대해서는 resize your original image이거나 필요에 따라 check this question이되어야합니다. 그러나 UITabBar 및 UITabBarItem 사용자 지정 내용은 문서에서 읽을 수있는 내용으로 제한됩니다.

개별적으로 항목을 추가로 사용자 지정하려는 경우 대신 사용자 지정 솔루션을 검색하거나 만드는 것이 좋습니다.

+0

답변 해 주셔서 감사합니다. 그래서 alwaysOriginal로 이미지를 사용해야합니다. 그러나 이미지 크기 문제는 어떻습니까? 내가 터치 할 때마다 tabbar 항목의 크기가 변경된다는 것을 이해할 수 없습니다. "UIEdgeInsetsMake (12, 10, 11, 11)"을 사용하지 않으면 크기가 조정되지 않습니다. 그러나 이미지는 Tabbar 영역에 전혀 맞지 않습니다. 그래서이 코드를 피팅에 사용했습니다. 그것에 대해 알고 있습니까? –

+0

@FrozenSea 리사이즈 문제로 답을 업데이트했습니다. edgeinsets 등의 코드에서 wierd resizing을하는 대신 올바른 크기로 이미지를 만들어야합니다. 이미지 크기를 수정하는 방법에 대한 전체 가이드를 보려면 다음을 참조하십시오. https://developer.apple.com/ios/human -interface-guidelines/graphics/image-size-and-resolution /,이 질문에 대한 답변을 표시하십시오 :) GL –

+0

@FrozenSea BTW. 코드를 간략히 살펴보면 switch 문에서 break가 누락되었습니다. switch item.tag {, 어쩌면 색조 색상을 바꿀 수없는 이유 일 수 있습니다. –