2011-02-09 1 views
1

이 질문은 이전에 물어 보았지만 해결되지는 않았지만이 점이 저에게는 효과적입니다. 사실, 나는 이미 그것을 풀었지만,이 문제는 아무 데나 돌아와서 머리를 때렸다.iPad/iPhone uiSearchbar 투명한 배경

UISearchBar의 배경을 투명하게 설정할 수 없습니다.

searchBar.backgroundColor = [UIColor clearColor]; 
[[searchBar.subviews objectAtIndex:0] removeFromSuperview]; 

을하고 멋지게 일했다 ...하지만 갑자기 중지 : 난 항상 사용하고 있었다. 내 xcode 버전을 업그레이드 한 이후 일 수 있지만 확실하지 않습니다. 나는 이미이 문제를 조사하는 데 두 시간을 보냈다. 누군가이 일을 저쪽에하고 있는가? 저를 올바른 방향으로 가르쳐주십시오. 감사합니다.

안부 T

+0

내 대답은 여기를 참조하십시오. http://stackoverflow.com/a/10647443/751026 – thesummersign

답변

10

당신의 파단 통해 반복 시도하고 올바른 클래스를 찾을 : 잘 모르겠어요

for (UIView *subview in searchBar.subviews) { 
    if ([subview isKindOfClass:NSClassFromString(@"UISearchBarBackground")]) { 
     [subview removeFromSuperview]; 
     break; 
    } 
} 

하지만 난 당신이 그 인덱스 0이 배경이다 가정 할 수있다 같아요 . 위의 예는 저에게 효과적입니다.

+0

작동하지만 제작 과정에서이 작업을 수행하지 않는 것이 좋습니다. 내가 아는 한, 이것은 API에 문서화되어 있지 않으므로, OS 업데이트가있을 때 코드가 작동을 멈출 수있는 가능성이 있습니다. 나는 당신이하고 싶은 일을하는 가장 좋은 방법은 자신의 검색 창을 코딩하는 것이라고 생각한다. –

+0

입력 해 주셔서 감사합니다. 나는 새로운 uisearchbar를 연결했고, 갑자기 오래된 것이 잘 작동하고있다 .... 이상한! – Tom

0

그것은 여전히 ​​나를 위해, 그래서 어쩌면 당신의 코드에 뭔가 다른 엉망. searchBar가 제대로 설정되었는지 확인하십시오 (IB에 연결된 콘센트,보기가 초기화 된 후 호출되는 등 ...)? 가장 좋은 방법은 [searchBar.subviews objectAtIndex : 0]의 콘텐츠를 인쇄하는 것입니다.이 스크립트는 UISearchBarBackground 개체 여야합니다. 그리고 BTW, 애플은 그들이 원하는 UISearchBar 뷰 계층 언제든지 변경할 수 있기 때문에, 당신은 더 나은 몇 가지 체크합니다 searchBar.subviews.count, 그리고

if ([[searchBar.subviews objectAtIndex:0] class] == NSClassFromString(@"UISearchBarBackground")) ... 

이를 호출하기 전에.

+0

감사합니다. 나는 새로운 검색 창을 연결했는데 갑자기 이전 검색 창이 다시 작동합니다. 이상한 일이지만, 고맙습니다. – Tom

0

searchBarStyle 속성을 UISearchBarStyleMinimal로 변경하기 만하면됩니다. 기본적으로 UISearchBarStyleProminent입니다. 아래 그림과 같이 스토리 보드 나 코드에서 변경할 수 있습니다.

self.yourSearBar.searchBarStyle = UISearchBarStyleMinimal;