저는 신생아 개발에 신참이지만, 제 답변을 많이 찾은 후에는 아직 찾을 수 없었습니다. 나는 ID가 탭 바 요소를 사용하기를 좋아하지만 탭 바를 통해 순수한 이미지보기를 사용하는 것을 고려 중입니다. 내 문제는 그 단추를 선택할 때 탭 막대 단추 셀의 배경색을 변경할 수있는 방법이 표시되지 않는다는 것입니다. 색조 (단추에 사용 된 이미지의 색)를 변경할 수 있습니다. 선택했을 때 단순히 배경을 변경하는 전쟁이 있습니까? (버튼을 선택하면 흰색 바탕 이미지를 사용하므로 셀의 배경색을 변경해야합니다.) 또는 원하는 이미지를 얻기 위해 imageView를 사용해야합니까?TabBar 버튼 배경 변경 선택한 때
0
A
답변
0
편집 2 : (사용되지 않음) 또는 selectionIndicatorImage :의 UITabBar의 방법 나는 당신이 selectedImageTintColor를 사용하여 요구 사항을 달성 할 수 있다고 생각합니다.
올드 응답 :
물건을 할 수있는 편리한 속성 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
선택 탭 표시 줄 아이템의 배경을 변경하려면 나는 다음과 같은 초기화와 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
내 문제는 내가 탭 표시 줄 단추를 채우고 단지를 전체 공간의 배경 색상을 변경할 수있다 selectedImage .... 내 질문에 지적했다. 내 selectedImage는 괜찮습니다. – awp2004
내 대답을 편집했습니다. 그래도 자신을 만족시키지 못한다면 달성하고자하는 이미지를 게시 할 수 있습니까? –
그 동안 내 마지막 대답 이후 나는 그 방향으로 생각을 갖고있었습니다. 그러나 나는 그 다음에 화면을 회전시킬 때 (그리고 여전히 전체 너비의 탭 바를 넓히면) 이미지가 늘어나지 않을 것이라고 생각했습니다. 나는 시간이있을 때 그것을 타르를 시도 할 것이다. 나는 회사가 나에게 보낸 투명 사진을 내가 비난 한 것을 원하면서 비난한다. 나는 한 시간 만에 다시 올거야. (대답을 승인하는 것이 내 실을 닫을 까? 나는 여전히 조금 더 깨달음을 원한다.) – awp2004