Скрыть фон UISearchBar в iOS5 - PullRequest
       2

Скрыть фон UISearchBar в iOS5

0 голосов
/ 12 января 2012

Код ниже, чтобы скрыть фон UIsearchBar, работает нормально до iOs4.2, но не в iOS4.3 или новее.

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

Ответы [ 3 ]

3 голосов
/ 26 сентября 2013

В iOS 7 еще один UIView был добавлен в UISearchBar, вот решение для iOS 7:

UIView *vw = [yourSearchBar.subviews objectAtIndex:0];
for (id img in vw.subviews) {
    if ([img isKindOfClass:NSClassFromString(@"UISearchBarBackground")]) {
        [img removeFromSuperview];
    }
}

Вы также можете сделать следующее (также работает в iOS 7):

[yourSearchBar setBackgroundImage:[UIImage new]];
[yourSearchBar setTranslucent:YES];
1 голос
/ 13 января 2012

Это не проблема для этого кода .... но также дает вам альтернативное решение, замените код цикла for на

    [[[searchBar subviews] objectAtIndex:0] removeFromSuperview];
0 голосов
/ 03 июля 2013

Я знаю, что уже поздно, но для справки:

dispatch_async (dispatch_get_global_queue (DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^ {CGRect rect = CGRectMake (0.0f, 0.0f, 1.0f, 1.0f); UIGraphicsBegin(rect.size); UIImage * изображение = ноль; CGContextRef контекст = UIGraphicsGetCurrentContext (); если (контекст) {CGContextSetFillColorWithColor (контекст, [UIColor clearColor] .CGColor); CGContextFillRect (контекст, прямоугольник), изображение = UIGraphicsGetImageFromCurrentImageContext ();}UIGraphicsEndImageContext ();

    dispatch_async(dispatch_get_main_queue(), ^{
        self.backgroundImage = image;
    });
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...