Botões semelhantes a AppStore (botões Facet)

Os botões facetados representam botões com borda e um fundo claro. Geralmente, seu plano de fundo é alterado em cliques, juntamente com a cor do texto. Você pode ver esses botões na AppStore.

Estado normal:

Cenário

Estado destacado:

Cenário

Na verdade, nĂŁo existe um truque padrĂŁo para personalizar um botĂŁo dessa forma, entĂŁo vou compartilhar a maneira que usei.

1) Crie um botĂŁo. Quer faça de forma programática ou no IB, nĂŁo se esqueça de alterar o seu tipo para “<b> Personalizado </b>”.

2) Personalize sua borda.

button?.layer.borderWidth = 1.0
button
?.layer.borderColor = self.tintColor?.CGColor
button
?.layer.cornerRadius = 5.0
button
?.layer.masksToBounds = true

3) Defina as cores do matiz para dois estados (<b> Normal </b> e <b> Destacado </b>).

button?.setTitleColor(self.tintColor, forState: UIControlState.Normal)
button
?.setTitleColor(UIColor.whiteColor(), forState: UIControlState.Highlighted)

4) Agora devemos nos preocupar com o fundo do botão quando destacado. Meu aplicativo que contém este tipo de botões tem a cor de matiz compartilhada, então foi necessário usar a mesma cor. Você pode criar uma imagem da cor necessária e usá-la ou pode seguir o caminho descrito abaixo.

func imageWithColor(color: UIColor, size: CGSize) -> UIImage {
UIGraphicsBeginImageContext(size)
color
.setFill()
var bounds = CGRectMake(0, 0, size.width, size.height)
UIRectFill(bounds)

let image = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext()

return image;
}

E definir a imagem de fundo.

button?.setBackgroundImage(self.imageWithColor(self.tintColor!, size: button!.bounds.size), forState: UIControlState.Highlighted)

Aproveitar! 🙂