문제

내 NAV 막대에는 사용자 정의 아이콘이있는 오른쪽 바트 턴 템즈가 있습니다 (아이콘 이미지는 흰색이며 iOS 6의 기본 색 구성표와 잘 어울립니다).

iOS 7에서는 InitWithTitle (코드 스 니펫 1 참조)을 사용하여 이미지를로드하면 아이콘의 "흰색"색상을 적절한 글로벌 색조 (이 경우 진한 파란색의 특정 색상)로 대체합니다.

코드 스 니펫 1:

UIBarButtonItem *refreshButton = [[UIBarButtonItem alloc] initWithTitle:@"" style:(UIBarButtonItemStyle) UIBarButtonSystemItemCancel target:(self) action:@selector(refreshList)];

refreshButton.image = [UIImage imageNamed:@"RefreshIcon.png"];

그러나 INITWITHCUSTOMVIEW를 사용하여 아이콘이 시야를 벗어나게하는 행동의 이상한 변화를 극복해야했습니다. 기본 아이디어는 아이콘의 크기를 구체적으로 설정하는 것이 었습니다. InitwithCustomView는 크기의 크기 문제를 해결했지만 글로벌 색조로 버튼 이미지를 표시하지 않으면 이미지 (흰색)의 색상으로 표시됩니다. 코드 스 니펫 2는 initwithCustomView로 버튼을 만드는 방법을 보여줍니다.

코드 스 니펫 2:

CGRect frameCustomButton2 = CGRectMake(0.0, 0.0, 18.0, 18.0);
UIButton *customButton2 = [[UIButton alloc] initWithFrame:frameCustomButton2];
[customButton2 setBackgroundImage:iconRefreshButton forState:UIControlStateNormal];
UIBarButtonItem *barCustomButton2 =[[UIBarButtonItem alloc] initWithCustomView:customButton2 ];
barCustomButton2.image = iconRefreshButton;
[customButton2 addTarget:self action:@selector(refreshList) forControlEvents:UIControlEventTouchUpInside];

이 모든 코드는 물론 (void) viewDidload에 있습니다. 나는 다음과 같은 것들을 시도했습니다.

barCustomButton2.tintColor = [UIColor blackColor];  //doesn't work

또는 [BarbuttonAppearance settIntColor : [uicolor blackcolor]]; // 작동하지 않습니다

그리고 그들은 이미지의 흰색을 무시하지 않습니다. 마치 전 세계 색조 색상을 보면서 사용자 정의보기의 생성이 발생하는 것처럼 보입니다.

버튼 아이콘이 글로벌 색조를 가져 오는 방법은 무엇입니까?

감사!

도움이 되었습니까?

해결책

"답변"체크 마크에 대한 더 나은 맥락을 제공하고 더 나은 형식을 제공하기 위해 이것을 루트 주석으로 만들고 싶었습니다.

나는 이것을 알아낼 수 있었다! 이미지에 항상 템플릿으로 렌더링되도록 말할 수 있습니다.

UIImage *iconRefreshButton = [UIImage imageNamed:@"MyIconFilename.png"];
iconRefreshButton = [iconRefreshButton imageWithRenderingMode:UIImageRenderingModeAlwaysTemplate];

기본값은 설정하지 않으면 "uiimagerenderingmodeautomatic"이므로 컨텍스트를 기반으로 템플릿 또는 원본 이미지로 렌더링됩니다.

다른 팁

첫 번째 코드 스 니펫으로 가지고 있던 문제를 해결해야하거나, 이미지를 마스크로 사용하여 색조 색상을 보여주는 Uibutton 서브 클래스를 만들어야합니다. drawRect:.

첫 번째 접근법을 추천합니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top