티스토리 뷰

iOS SDK

Customize UITabBar in iOS5

hoiogi 2011. 10. 21. 18:04

이번에 iOS5로 업데이트 되면서 많은 API의 추가가 되었는데

특히 편리한 API 가 추가 되어서 소개해볼까한다.

UIControl 들의 Customizing 작업이 상당히 편하게 바뀐거 같다!!(내 개인적인 느낌)

참고는 아래의 사이트에서 더 해보시길!
http://tinyw.in/AU2E


Apple의 공식 Document에서는 뭐라뭐라 하는데 Proxy 패턴을 썻다고한다. 

써본 느낌은 Delegate 패턴의 반대 느낌이라고 해야하나?!

아래와 같이 일단 하면 편하게 커스터마이징이 가능하다

ex) UINavigationBar 의 백그라운드 이미지 바꾸기

// UINavigationBar customize
// iOS5.0 이상에서 동작

UIImage *image = [[UIImage imageNamed: @"title_bar.png"resizableImageWithCapInsets:UIEdgeInsetsMake(0.0, 0.0, 0.0, 0.0)];

[[UINavigationBar appearance] setBackgroundImage:image forBarMetrics:UIBarMetricsDefault]; 


전에는 object-c 의 category 기능을 이용해서 아래처럼 사용햇는데 iOS5.0 이상에서는 아래 같은 코드가 작동하지를 않는거 같다.

// UINavigationBar+Customize.m
// iOS5.0이상에서는 동작하지 않음.

@implementation UINavigationBar (Customize)

- (void)drawRect:(CGRect)rect

{

    UIImage *image = [UIImage imageNamed: @"title_bar.png"];

   [image drawInRect:CGRectMake(0, 0, self.frame.size.width, self.frame.size.height)];

}

@end 


뭐 아무튼....

본론으로 들어가서 이전에 사용하던 커스텀 탭바가 UITabBarItem의 badgeValue가 표현되지 않는 문제점이 있어서 iOS5.0 이상에서 작동하는 코드를 만들어 보았다! 결론은! 잘된다!! ㅋ 대신 iOS4.3이하 버전에선 안되니까 예외처리를 좀 해야한다. 

1. AppDelegate.m 파일에 추가

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {

// UITabbar customize 

UIImage *tabBarBackgroundImage = [[UIImage imageNamed:@"tap_test.png"

  resizableImageWithCapInsets:UIEdgeInsetsMake(0.0, 0.0, 0.0, 0.0)];
 

[[UITabBar appearance] setBackgroundImage:tabBarBackgroundImage];

 

// UITabbarItem customize
// 이부분은 UITabBarItem에 Text를 아래로 숨기기 위한 코드 

[[UITabBarItem appearance] setTitlePositionAdjustment:UIOffsetMake(0.0, 20.0)];



2. 사용하는 UITabBarController의 delegate 가 되는 파일에 추가

#pragma mark - UITabBarControllerDelegate methods

- (void)tabBarController:(UITabBarController *)aTabBarController didSelectViewController:(UIViewController *)aViewController {

         NSInteger tabIndex = aTabBarController.selectedIndex;


        [aT
abBarController.tabBar setSelectionIndicatorImage:

                     [UIImage imageNamed:[NSString stringWithFormat:@"tab_%02d.png", tabIndex + 1]]];    

}



위에처럼 1. 2. 하면 badgeValue도 잘나오고! 좋다!

아무튼 자료찾으시는 분들에게 도움 좀 되시길 


공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
«   2024/12   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31
글 보관함