Значки панели инструментов iPad: изображения кнопок панели не центрированы?

Взгляните на следующий фрагмент снимка экрана приложения для iPad, над которым я работаю:

ipad toolbar button images

Значок «пузырек чата» слева взят из знаменитого значка Glyphish установить . Обратите внимание на то, что он имеет правильное вертикальное расположение (посередине), но намного темнее, чем оттенки серого, используемые для кнопки 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? Или оба? Или ни то, ни другое (т.е. "как задумано")?

Изменить: Ответы на ответы

Похоже, что первая версия

UIImage* image = [UIImage imageNamed:@"02-chat.png"];
UIBarButtonItem* chatBarButtonItem = [[UIBarButtonItem alloc] initWithImage:image style:UIBarButtonItemStylePlain target:nil action:NULL];

Как мне получить кнопку UIBarButtonItem , которая имеет как правильную окраску / прозрачность (так что мне не нужно делать это вручную), так и правильное вертикальное позиционирование?

Это одна или другая ошибка, либо в моем коде, либо в Apple? Или оба? Или ни то, ни другое (т.е. "как задумано")?

Изменить: Ответы на ответы

Похоже, что первая версия

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 на

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

6
задан Shaggy Frog 2 October 2010 в 01:03
поделиться