2014-11-20 5 views
0

저는 신생아 개발에 신참이지만, 제 답변을 많이 찾은 후에는 아직 찾을 수 없었습니다. 나는 ID가 탭 바 요소를 사용하기를 좋아하지만 탭 바를 통해 순수한 이미지보기를 사용하는 것을 고려 중입니다. 내 문제는 그 단추를 선택할 때 탭 막대 단추 셀의 배경색을 변경할 수있는 방법이 표시되지 않는다는 것입니다. 색조 (단추에 사용 된 이미지의 색)를 변경할 수 있습니다. 선택했을 때 단순히 배경을 변경하는 전쟁이 있습니까? (버튼을 선택하면 흰색 바탕 이미지를 사용하므로 셀의 배경색을 변경해야합니다.) 또는 원하는 이미지를 얻기 위해 imageView를 사용해야합니까?TabBar 버튼 배경 변경 선택한 때

답변

0

편집 2 : (사용되지 않음) 또는 selectionIndicatorImage :의 UITabBar의 방법 나는 당신이 selectedImageTintColor를 사용하여 요구 사항을 달성 할 수 있다고 생각합니다.


올드 응답 :

문서에 따르면 https://developer.apple.com/Library/ios/documentation/UIKit/Reference/UITabBarItem_Class/index.html#//apple_ref/occ/instp/UITabBarItem/selectedImage

물건을 할 수있는 편리한 속성 selectedImage이 있습니다.

init 메소드에서 직접 설정할 수 있습니다. 의 UIViewController에서 예 :

- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil { 
    self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil]; 
    if (self) { 
     self.title = @"my controller"; 
     self.tabBarItem = [[UITabBarItem alloc] initWithTitle:self.title image:[UIImage imageNamed:@"normalTabBarItem"] selectedImage:[UIImage imageNamed:@"selectedTabBarItem"]]; 
    } 
    return self; 
} 

편집합니다 UITabBarItem은 배경색이 없습니다. 따라서 이미지와 선택한 이미지에 "배경색"을 직접 포함시켜야합니다.

기본적으로 선택되지 않은 이미지와 선택한 이미지는 원본 이미지의 알파 값에서 자동으로 만들어집니다. 시스템 색상 표시를 방지하려면 UIImageRenderingModeAlwaysOriginal로 이미지를 제공하십시오.

+0

내 문제는 내가 탭 표시 줄 단추를 채우고 단지를 전체 공간의 배경 색상을 변경할 수있다 selectedImage .... 내 질문에 지적했다. 내 selectedImage는 괜찮습니다. – awp2004

+0

내 대답을 편집했습니다. 그래도 자신을 만족시키지 못한다면 달성하고자하는 이미지를 게시 할 수 있습니까? –

+0

그 동안 내 마지막 대답 이후 나는 그 방향으로 생각을 갖고있었습니다. 그러나 나는 그 다음에 화면을 회전시킬 때 (그리고 여전히 전체 너비의 탭 바를 넓히면) 이미지가 늘어나지 않을 것이라고 생각했습니다. 나는 시간이있을 때 그것을 타르를 시도 할 것이다. 나는 회사가 나에게 보낸 투명 사진을 내가 비난 한 것을 원하면서 비난한다. 나는 한 시간 만에 다시 올거야. (대답을 승인하는 것이 내 실을 닫을 까? 나는 여전히 조금 더 깨달음을 원한다.) – awp2004

0

선택 탭 표시 줄 아이템의 배경을 변경하려면 나는 다음과 같은 초기화와 TabBar의라는 사용자 정의 클래스를 만든 :

#import "TabBar.h" 
#define RGB(r, g, b) [UIColor colorWithRed:r/255.0 green:g/255.0 blue:b/255.0 alpha:1] 

@implementation TabBar 

- (instancetype)initWithCoder:(NSCoder *)aDecoder { 
    if (!(self = [super initWithCoder:aDecoder])) return nil; 

    [self setupSelectionIndicatorImage]; 

    return self; 
} 

- (void)setupSelectionIndicatorImage { 
    UIView *item = self.subviews.firstObject; 
    UIColor *backgroundColor = RGB(0, 117, 255); 

    // Creating background image 
    CGRect rect = CGRectMake(0, 0, item.bounds.size.width, item.bounds.size.height); 
    UIGraphicsBeginImageContextWithOptions(rect.size, NO, 0); // 0 == device main screen scale 
    CGContextRef context = UIGraphicsGetCurrentContext(); 
    CGContextSetFillColorWithColor(context, [backgroundColor CGColor]); 
    CGContextFillRect(context, rect); 
    UIImage *img = UIGraphicsGetImageFromCurrentImageContext(); 
    UIGraphicsEndImageContext(); 

    self.selectionIndicatorImage = img; 
} 

@end