Взгляните на следующий фрагмент скриншота из приложения для iPad, над которым я работаю:
Значок "пузыря чата" слева от известного Набор иконок глифов .Обратите внимание, что он имеет правильное вертикальное положение (посередине), но намного темнее, чем шкала серого, используемая для кнопки InfoDark.Код для создания этого значка выглядит следующим образом:
UIImage* image = [UIImage imageNamed:@"02-chat.png"];
CGRect frame = CGRectMake(0, 0, image.size.width, image.size.height);
UIButton* button = [[UIButton alloc] initWithFrame:frame];
[button setBackgroundImage:image forState:UIControlStateNormal];
[button addTarget:nil action:NULL forControlEvents:UIControlEventTouchUpInside];
[button setShowsTouchWhenHighlighted:YES];
UIBarButtonItem* chatBarButtonItem = [[UIBarButtonItem alloc] initWithCustomView:button];
Значок "пузыря чата" в середине создается с использованием одного и того же изображения с использованием другого кода.Обратите внимание, что он имеет правильную раскраску / прозрачность, но имеет неправильное вертикальное положение (слишком высокое).:
UIImage* image = [UIImage imageNamed:@"02-chat.png"];
UIBarButtonItem* chatBarButtonItem = [[UIBarButtonItem alloc] initWithImage:image style:UIBarButtonItemStylePlain target:nil action:NULL];
Как получить кнопку UIBarButtonItem
, которая имеет правильную окраску / прозрачность (поэтому я нене нужно ли это делать вручную), а также правильное вертикальное позиционирование?
Является ли одна или другая ошибка, либо в моем коде, либо в Apple?Или оба?Или ни то, ни другое (т. Е. «Как задумано»)?
Редактировать: Ответы на ответы
Похоже, что первая версия использует изображение в качестве маски, а не как обычное изображение.
Похоже, но это не так.Если я заменил изображение тем, которое было подсвечено другом в Photoshop, и использую UIButton
, расположение и цвет будут правильными.Я просто пытаюсь найти обход этого ручного шага.
Имейте в виду, что помещение объектов UIResponder (например, UIButton) в UIBarButtonItem дает непредсказуемые результаты, и я обнаружил, что лучше избегать этого.
У вас есть источник?(Особенно ссылка на Apple?) Никогда не слышал об этом.
Переделайте изображение под свои собственные.Это лучший и единственный способ обеспечить правильный размер, градиенты и положение всех значков на панели инструментов.
Я не обязательно не согласен.Тем не менее, это ручной шаг, который я хочу устранить.Должна быть возможность получить желаемое поведение без необходимости редактирования.(Тем более, что я получаю обе половины желаемого поведения, используя существующие фреймворки. Только не одновременно)
Лучше всего для панели инструментов 25x25 и 50x50 @ 2x.Иногда вам может понадобиться всего лишь 23.
Это что-то официальное от Apple?Возможно от HIG?Можете ли вы предоставить источник?
Вы можете попробовать установить на нем imageInsets, чтобы протолкнуть его вниз.
Это также излишне ручной процесс.Хуже всего то, что это нужно настраивать вручную для каждого изображения, и если изображение изменяется каким-либо образом, его необходимо перепроверять.Слишком много работы.Я хочу просто установить его на изображение и позволить базовой структуре решить, как центрировать изображение.