2012-11-17 5 views
10

UISearchBar의 작은 돋보기 아이콘에 대한 내 자신의 이미지를 설정할 수 있기를 원합니다. 가능하다면 주위를 움직일 수 있기를 바랍니다. 어떤 아이디어? 현재 iOS5 이상에서만 지원이 필요합니다. 이후에서 iOS 5를 지원하는 앱의UISearchBar의 돋보기 아이콘 변경

+0

@ACB 친절하게도 내가 코멘트에 추가 질문으로이 물었다 어디 UISearchBar에 대해 한 다른 게시물이 대답하는 것이 었습니다. 그는 "당신은 아래에 언급 한 바와 같이 iOS 5 앱을 사용할 수 있습니다.이 전에 OS 버전을 사용하는 응용 프로그램의 경우 작동하지 않습니다 - (void) setImage : (UIImage *) iconImage for SearchBarIcon : (UISearchBarIcon) 아이콘 상태 : (UIControlState) 상태;" –

답변

34

, 당신은

- (void)setImage:(UIImage *)iconImage forSearchBarIcon:(UISearchBarIcon)icon state:(UIControlState)state; 

UIControlStateNormalUIControlStateDisabled

검색 막대의 두 가지 가능한 상태이며,이 작업을 수행하기 위해 아래의 방법을 사용할 수 있습니다.

이 전에 OS 버전을 사용하는 앱의 경우 작동하지 않습니다. UISearchbar에 범주를 만들고 하위보기를 열거하여 아이콘을 변경해야 할 수 있습니다.

+0

게으르거나 조금 더 명확히하기를 원하는 사람들을 위해 (예 : UISearchBar의 메소드) : '[self.searchController.searchBar setImage : [UImage imageNamed : @ "YourImageHere"] forSearchBarIcon : UISearchBarIconSearch 상태 : UIControlStateNormal ]; ' 또는 검색 컨트롤러/바가있는 곳이면 어디든 – gadu

-2

모든 하위보기를 인쇄 해보세요. ... iOS가 고유하지 않습니다.

for (id obj in _SearchBar.subviews) { 
    NSLog(@"%@", obj); 

    if ([obj isKindOfClass:[UIImage class]]) { 
    NSLog(@"probably found..."); 

    UIImage *img = obj; 
    [img setImage....]; 
    } 
} 
0

사용

- (void)setImage:(UIImage *)iconImage forSearchBarIcon:(UISearchBarIcon)icon state:(UIControlState)state; 
13

그냥 기본 돋보기 아이콘의 색상을 변경하려면, 당신은 이미지 뷰의하려면 tintColor을 설정 한 후 템플릿 모드를 사용하는 이미지를 설정할 수 있습니다. 스위프트를 들어

if ([view isKindOfClass:[UITextField class]]) { 
    UITextField *textField = (id)view; 

    UIImageView *iconView = (id)textField.leftView; 
    iconView.image = [iconView.image imageWithRenderingMode:UIImageRenderingModeAlwaysTemplate]; 
    iconView.tintColor = <##dimmedColor##>; 

    // other styling: 
    textField.font = <##font##>; 
    textField.textColor = <##activeColor##>; 
    textField.attributedPlaceholder = [[NSAttributedString alloc] initWithString:<##searchBar##>.placeholder 
                     attributes:@{NSForegroundColorAttributeName: <##dimmedColor##>}]; 
} 
+0

imageWithRenderingMode가 중요했습니다. 언뜻 보면 놓쳤습니다! –

2

: -

UISearchBar.appearance().setImage(UIImage(named: "new_search_icon"), forSearchBarIcon: UISearchBarIcon.Search, state: UIControlState.Normal)