iPhone groupTableViewBackgroundColor альтернатива для iPad - PullRequest
3 голосов
/ 12 декабря 2011

Я создаю универсальное навигационное приложение на iOS 5.0.

Настройка вида фона для фона выглядит как хорошо для iPhone

self.view.backgroundColor = [UIColor groupTableViewBackgroundColor];

Но для iPad я обнаружил, что это не работает, как ожидалось.

Есть ли альтернатива для получения того же фона на iPad с использованием какого-либо цветного рисунка?

Если это так, укажите мне несколько примеров кода или опубликуйте их.

1 Ответ

1 голос
/ 04 июля 2012

Недавно при работе над проектом XCode мы установили цвет фона для groupTableViewBackgroundColor, который на iPhone создает фон в виде полосок и хорошо работает. Этот фон такой же, как и в UITableViews.

При переносе этого на iPad UITableViews теперь имеют сплошной серый цвет, а groupTableViewBackgroundColor по сути такой же, как [UIColor clearColor].

Можно подумать, что захват цвета, который использует UITableView, будет работать. Я боюсь, что это не так, поскольку оказывается, что это небольшой градиент, не так много, как вы бы заметили, но когда вы меняете представление, вы замечаете.

Способ исправить это - создать CAGradientLayer и применить его к UIView до загрузки чего-либо еще. Во-первых, вам нужно создать функцию, которая эмулирует градиент, ниже я использовал то:

-(CAGradientLayer *)groupGradientColour {
    CAGradientLayer *layer = [CAGradientLayer layer];
    layer.colors = [NSArray arrayWithObjects:
                    (id)[[UIColor colorWithRed:(0xE2 / 255.0) 
                                         green:(0xE5 / 255.0) 
                                          blue:(0xE9 / 255.0) 
                                         alpha:1.0] CGColor],
                    (id)[[UIColor colorWithRed:(0xD0 / 255.0) 
                                         green:(0xD2 / 255.0) 
                                          blue:(0xD7 / 255.0) 
                                         alpha:1.0] CGColor],
                    nil];
    layer.locations = [NSArray arrayWithObjects:
                       [NSNumber numberWithFloat:0.0f],
                       [NSNumber numberWithFloat:1.0f],
                       nil];
    return layer;
}

Затем вызовите это в viewDidLoad:

UIView *background = [[UIView alloc] init];
       background.frame = CGRectMake(
                                  0, 
                                  0, 
                                  [[UIScreen mainScreen] applicationFrame].size.width, 
                                  [[UIScreen mainScreen] applicationFrame].size.height);
    CAGradientLayer *gradient = [self groupGradientColour];
    gradient.frame = background.bounds;
    [background.layer insertSublayer:gradient atIndex:0];
    [self.view addView:background atIndex:0];

Как только вы это сделаете, у вас будет градиент в том же стиле, что и в UITableView.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...