현재 iOS 의 탭바는 선택된 탭의 아이콘 색상을 변경할 수 없어서 아주 골칫거리입니다.
이것 때문에 많은 App 들이 탭 바를 따로 만들어서 사용하는 것을 흔히 보게 됩니다.

탭 바의 선택 아이콘을 다르게 보이는 방법으로 다음과 같은 방법도 생각해 볼 수 있습니다.
아주 간단한 방법을 찾는다면 말이지요. 단, 이렇게 하면 제한적으로 사용해야 합니다.

먼저, 탭 바 컨트롤의 딜리게이트 컨트롤러 클래스에 UIImageView 를 하나 만듭니다.

@interface NewsAppDelegateiP : NSObject <UIApplicationDelegateUITabBarControllerDelegate>

{

...

    UIImageView *tabImg;

}



그리고 초기화 부분에서 이미지 뷰를 처음 선택된 탭바 아이콘 이미지로, 위치까지 맞춰서 초기화 합니다.
아래의 경우는 탭이 5개인 경우를 예로 보이고 있습니다.


    // 이미지 살짝 커스터마이징 하기 위한 이미지 준비.

    tabImg = [[UIImageView alloc] initWithImage:[UIImage imageNamed:[[NSUserDefaults standardUserDefaults] stringForKey:KEYICON_(1)]]];


    [tabImg setFrame:CGRectMake(17, 435, 30, 30)];

    [tabBarController.view addSubview:tabImg];
 



그리고, 탭 바가 선택될때 호출되는 delegate 메소드에서 다음과 같이 처리하면, 선택된 탭 바 아이콘 바로 위에 우리가 지정한 이미지가 나타나게 되므로 탭 바의 형태를 조금이나마 원하는 대로 바꿀 수 있습니다.
이 역시 모든 좌표값은 5개의 탭인 경우이고, iPhone 화면을 Portrait (세로 방향 화면) 로 다루는 경우입니다.

- (void)tabBarController:(UITabBarController *)tBarController didSelectViewController:(UIViewController *)vController

{


    // 선택된 탭의 아이콘 이미지를 별도로 준비했던 이미지 뷰에 준비.

    [tabImg setImage:[UIImage imageNamed:[[NSUserDefaults standardUserDefaults] stringForKey:KEYICON_(tBarController.selectedIndex+1)]]];


    // 위치 조정.

    [tabImg setFrame:CGRectMake( 145 - ((3-(tBarController.selectedIndex+1))*64) , 435, 30, 30)];


}






단, 탭 바가 화면에서 사라진다던지, 화면 레이아웃이 변경되는 경우에 대해서 모두 처리해주지 않으면 화면의 엉뚱한 곳에 이미지가 떠 있는 것을 보게 되므로, 주의해야 합니다.

결국 크게 만족스러운 해결책은 되지 못한다는 소리지요....


이 게시물을..