Como eu desenharia um UIView personalizado que é literalmente apenas uma bola (um círculo 2D)? Gostaria apenas de substituir o método drawRect? E alguém pode me mostrar o código para desenhar um círculo azul?
Além disso, seria bom alterar o quadro dessa visão dentro da própria classe? Ou preciso alterar o quadro de uma classe diferente?
(apenas tentando montar uma bola quicando)
Sim:
Idealmente não, mas você poderia.
Eu deixaria o pai controlar isso.
fonte
CGContextSetFillColorWithColor(ctx, self.colorOfCircle.CGColor);
, o método proposto na soluçãoCGColorGetComponents
só funciona com algumas cores, consulte stackoverflow.com/questions/9238743/...rect
, usei acidentalmenteself.frame
a elipse. O valor correto éself.bounds
. D'oh! :)Aqui está outra maneira de usar o UIBezierPath (talvez seja tarde demais ^^) Crie um círculo e oculte o UIView com ele, da seguinte maneira:
fonte
layerClass
método de classe para torná-lo uma camada de forma.Minha contribuição com uma extensão Swift:
Apenas ligue
myView.asCircle()
fonte
masksToBounds
a verdade e usandoself
são todos opcionais nesta resposta, mas ainda é a solução mais curto e melhorSwift 3 - classe personalizada, fácil de reutilizar. Ele usa o
backgroundColor
conjunto no construtor de UIfonte
Classe Swift 3 :
fonte
Outra maneira de abordar o desenho em círculo (e outras formas) é usando máscaras. Você desenha círculos ou outras formas criando, primeiro, máscaras das formas necessárias; segundo, fornece quadrados de sua cor e, terceiro, aplica máscaras a esses quadrados de cor. Você pode alterar a máscara ou a cor para obter um novo círculo personalizado ou outra forma.
Aqui está a saída do código acima:
fonte
Há outra alternativa para pessoas preguiçosas. Você pode definir o
layer.cornerRadius
caminho da chave para sua visualização no Interface Builder . Por exemplo, se sua visualização tiver uma largura = altura de 48 , definalayer.cornerRadius = 24
:No entanto, isso só funciona se você tiver um tamanho estático da visualização
(width/height is fixed)
e não estiver mostrando o círculo no construtor de interfaces.fonte
Swift 3 - Xcode 8.1
fonte