Как выделить значки, такие как панель инструментов iOS - PullRequest
2 голосов
/ 21 марта 2011

Я хотел бы создать несколько пользовательских панелей инструментов, используя некоторые изображения, которые я также использую для панели вкладок iOS.Как выделить значки, как Apple, на панели вкладок?

Ответы [ 2 ]

3 голосов
/ 21 марта 2011

Обратите внимание, что я лично этого не делал, но это то, что я сделал бы, если бы у меня были потребность и время.

UIToolBar, кажется, достигает эффекта, используя 3 слоя:

  1. самый нижний слой - закругленный прямоугольник с черно-серой штриховкой
  2. второй слой - синий градиент яркости
  3. самый верхний слой - это пользовательское изображение, из которого используется только альфа-канал.

Нижний и второй слои могут быть предварительно отрендеренными изображениями, выполненными в соответствии с произвольными размерами с использованием [UIImage stretchableImageWithLeftCapWidth::].

Чтобы применить альфа-канал самого верхнего слоя ко второму слою, нарисуйте самый верхний слой на изображении второго слоя, используя UIContextDrawImage с режимом наложения kCGBlendModeSourceIn. Затем скомпонуйте результат поверх самого нижнего изображения слоя, и у вас должно получиться что-то вроде того, что UIToolBar рендерит.

1 голос
/ 21 марта 2011

Посмотрите на UIButton reference , который вы, вероятно, захотите создать, а затем использовать;

- (void)setImage:(UIImage *)image forState:(UIControlState)state

Где у вас есть UIControlState сэти возможные значения;

  • UIControlStateNormal
  • UIControlStateHighlighted
  • UIControlStateDisabled
  • UIControlStateSelected
  • UIControlStateApplication
  • UIControlStateReserved

Существует также свойство showsTouchWhenHighlighted, которое по умолчанию равно NO, но при нажатии на которое будет светиться кнопка.

...