Como tingir as imagens de fundo de um UIButton programaticamente e dinamicamente?

Estou trabalhando em um aplicativo - ou melhor, em algum "framework" reutilizável que estou feliz em compartilhar quando funcionar. Dentro deste aplicativo, o usuário deve poder escolher em uma lista de temas de cores. Portanto, o aplicativo deve ser capaz de colorir seus elementos de interface do usuário de alguma forma bastante dinâmica.

Para os botões, todo o tingimento não funciona. Imagens de fundo devidamente coloridas devem ser fornecidas aqui. Mas preparar um conjunto de imagens de fundo para cada um deles é apenas o segundo melhor. Não é dinâmico e flexível o suficiente.

No final, uma solução pode ser fornecer uma imagem gradiente monocromática (cinza) para o estado selecionado e normal e colorir essa imagem programaticamente usando CoreGraphics ou OpenGL. Mas, francamente, não sei por onde começar. Como deve ser o gradiente e como eu, então, programaticamente tingir isso em qualquer cor?

Praticamente se aplica a UISegmentedControls, apenas um pouco mais complicado. :) Qualquer solução genérica que cubra UISegementedControls também é altamente apreciada.

questionAnswers(6)

yourAnswerToTheQuestion