Обратите внимание, что я лично этого не делал, но это то, что я сделал бы, если бы у меня были потребность и время.
UIToolBar
, кажется, достигает эффекта, используя 3 слоя:
- самый нижний слой - закругленный прямоугольник с черно-серой штриховкой
- второй слой - синий градиент яркости
- самый верхний слой - это пользовательское изображение, из которого используется только альфа-канал.
Нижний и второй слои могут быть предварительно отрендеренными изображениями, выполненными в соответствии с произвольными размерами с использованием [UIImage stretchableImageWithLeftCapWidth::]
.
Чтобы применить альфа-канал самого верхнего слоя ко второму слою, нарисуйте самый верхний слой на изображении второго слоя, используя UIContextDrawImage
с режимом наложения kCGBlendModeSourceIn
. Затем скомпонуйте результат поверх самого нижнего изображения слоя, и у вас должно получиться что-то вроде того, что UIToolBar
рендерит.