Создайте CGGradient из динамического оттенкаЦвет - PullRequest
3 голосов
/ 25 мая 2011

Apple делает это для большей части UIKit.Вы просто передаете элемент tintColor элементам, и он автоматически генерирует из него хороший (в большинстве случаев в любом случае) градиент.

Я сталкивался с этой функцией градиента глянца , но результат далек от того, что я искал.Я знаю, что есть также UIColor-расширения , которые добавляют такие методы, как "lighterColor" и "darkerColor", но я сомневаюсь, что они были созданы для генерации градиентов (и, следовательно, для получения нечетких градиентов).

Существует ли какой-либо сторонний класс или функция, которая делает это аналогично тому, как это делает Apple?

1 Ответ

4 голосов
/ 25 мая 2011

Существует много способов динамического тонирования, но проще всего начать с рисования предварительно отрисованного изображения в градациях серого, а затем нарисовать цвет оттенка сверху, используя kCGBlendModeOverlay.Режим наложения «Наложение» работает как Photoshop и особенно полезен для тонирования.

Вот как мы рисуем настраиваемую тонированную панель навигации:

- (void)drawRect:(CGRect)rect {
    [[UIImage imageNamed:@"NavBar.png"] drawInRect:rect]; // grayscale untinted version
    UIColor *tint = [UIColor colorWithRed:1 green:0.5 blue:0.5 alpha:1]; // arbitrary
    [tint set];
    UIRectFillUsingBlendMode(rect, kCGBlendModeOverlay);
}

Цвета оттенков можно предварительно просмотреть непосредственно в Photoshop,просто создайте слой с вашим цветом в качестве сплошной заливки в режиме наложения Overlay.

Особая технология Apple для тонирования UINavigationBar и друзей, кажется, представляет собой комбинацию оттенка с цветной заливкой плюс наложения предварительно визуализированных градиентных изображений симена, такие как «UITintedTopBarHighlightFlat.png», найденные в файле обложки системы.

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