Определить правильное значение RGBA для цветового оттенка с учетом дизайнерского изображения клиента? - PullRequest
8 голосов
/ 12 апреля 2011

Мне часто дают макеты изображений, которые определяют, как должно выглядеть приложение для iPhone.Они могут быть получены из множества разных методов, так как есть проекты, иногда бальзамические или даже нарисованные от руки, иногда Photoshop.Одной из распространенных особенностей является оттенок цвета, который обычно задается в соответствии с корпоративным брендом или общим дизайном приложения.

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

Учитывая пример того, как клиент представляет себе панель навигации *, как определить правильный UIColor для применения к атрибуту tintColor бара?

* игнорирование макетов, содержащих эффекты радуги, неправильно примененные градиенты и другиеполеты фантазии.Соответствие цвета и яркости вдоль центральной линии было бы достаточно.По крайней мере, это оправданная позиция: «То, о чем ты просишь, - это не то, как работает iOS!»

Ответы [ 4 ]

5 голосов
/ 12 апреля 2011

Установите приложение с UINavigationBar / UIToolbar и тремя ползунками, чтобы установить tintColor.Перемещайте ползунки до тех пор, пока они не будут выглядеть правильно.

Если вы также каким-то образом вносите изображение в приложение (UIPasteboard или вставляете его в ресурс), используя -[CALayer renderInContext:] и некоторую магию CoreGraphics (kCGBlendModeDifference и что-то для умноженияразличия, я забыл, что я использовал) вы даже можете сравнить два изображения.

Примечание симулятора: Сначала вам нужно будет сделать Cmd-C, чтобы "вставить" из MacКартон в симулятор Картон.

Я обнаружил, что вы не можете воспроизвести градиент по умолчанию на iPhone и iPad, кроме как с tintColor = nil (у iPad по умолчанию также нет «блеска»).).Вы можете подойти достаточно близко, но тогда цвет кнопки «Готово» будет неправильным.

Обычно я делаю сэмплы в середине навигационной панели макета.

3 голосов
/ 19 февраля 2013

Разработка над ответом . , вот бесплатное приложение в AppStore, которое я нашел для этого, оно называется "BarTint"

http://www.appstore.com/bartint

3 голосов
/ 12 апреля 2011

Отличный вопрос, на который у меня нет прямого ответа, но у меня есть решение.

Обычно, когда я получаю дизайн, панель навигации на самом деле не похожа на панель навигации iPhone с оттенком.Градиент, как правило, также отличается.На мой взгляд, есть два пути:

  1. Получить приложение вроде дизайна
  2. Получить приложение точно так же, как дизайн

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

Если яВы действительно хотите получить все правильно, способ заменить чертеж панели навигации по умолчанию изображением.

Просто создайте категорию для UINavigationBar и переопределите drawRect.Это работает на удивление хорошо, и в большинстве случаев кнопки по умолчанию будут того цвета, который вам нужен, и будут смешиваться без лишних усилий.

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

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

@implementation UINavigationBar (CustomImage)
- (void)drawRect:(CGRect)rect {
UIImage *image=nil;
if (self.tag == 0)
    image = [UIImage imageNamed: @"navBarDesign1.png"];
else if (self.tag == 1)
    image = [UIImage imageNamed: @"navBarDesign2.png"];

[image drawInRect:CGRectMake(0, 0, self.frame.size.width, self.frame.size.height)];
 }

 @end
2 голосов
/ 12 апреля 2011

Я всегда помещаю стиль в «Черный непрозрачный» (если я работаю с Интерфейсным Разработчиком) и затем пробую самый темный цвет в дизайне (обычно области на нижнем краю) и помещаю этот цвет как оттенок.Это дает мне что-то действительно похожее, НО, конечно, не позволяет мне управлять световой (отражающей) стороной.Если клиент действительно хочет точный градиент, я использую изображение (к сожалению) ...

...