Como fazer bordas duplas no UIImage com o Swift?

Dec 04 2020

Eu tentei procurar os truques de "borda dupla" do Swift para fazer assim. Tenho a sensação de que isso pode ser como uma "borda dupla" no UIImage.

Deixe-me saber se você conhece os códigos. :)

Respostas

1 AJ16 Dec 04 2020 at 14:27

Você pode apenas pegar um UIView e adicionar o UIImageView dentro dele. Limpe a cor do UIView para limpar.

Isso é o que fiz usando o storyboard.

  1. Adicionado o UIView e um UIImageView dentro dele, a cor da visualização é definida como clara e a visualização da imagem está a 15 pontos de todos os lados. Por favor, mude de acordo com sua necessidade (consulte a imagem 1).

  2. Este é o código do controlador de visualização (consulte a imagem 2).

  3. Saída (consulte a imagem 3).

Nota : Apenas uma ideia básica, embora você possa alterar a cor e a largura da borda, etc. de acordo com sua necessidade.

Layout de storyboard

Ver o código do controlador

Resultado

2 SumitJain Dec 04 2020 at 11:55

Você precisa adicionar borderColor (preto) e cornerRadius à camada padrão de UIImageView. Junto com isso, você deve adicionar outra subcamada em UIImageView com borderColor em cinza.

imageView.layer.borderWidth = 4.0
imageView.layer.borderColor = UIColor.gray.cgColor
imageView.layer.cornerRadius = imageView.frame.width / 2

let borderLayer = CALayer()
borderLayer.frame = imageView.bounds
borderLayer.borderColor = UIColor.black.cgColor
borderLayer.borderWidth = 14.0
borderLayer.cornerRadius = borderLayer.frame.width / 2
imageView.layer.insertSublayer(borderLayer, above: imageView.layer)

Veja a demonstração do playground em anexo.

PeterDu Dec 04 2020 at 11:09

Acho que você pode adicionar 1 círculo (UIView) como uma subvisualização entre UIImageView e UIImage. Por exemplo, você pode inicializar UIImageView com a graycor do cornerRadius externo. Então, você adiciona o círculo UIView e finalmente o UIImage.

Ou, a alternativa pode ser adicionar o UIImage antes do círculo UIView (com fundo transparente).

Acho que você pode encontrar o código semelhante aqui: Visualização da imagem com borda dupla