¿Cómo haría para dibujar un UIView personalizado que es literalmente solo una bola (un círculo 2D)? ¿Solo anularía el método drawRect? ¿Y alguien puede mostrarme el código para dibujar un círculo azul?
Además, ¿estaría bien cambiar el marco de esa vista dentro de la clase misma? ¿O necesito cambiar el marco de una clase diferente?
(solo tratando de configurar una pelota que rebota)
Si:
Idealmente no, pero podrías.
Dejo que los padres controlen eso.
fuente
CGContextSetFillColorWithColor(ctx, self.colorOfCircle.CGColor);
, el método propuesto en la soluciónCGColorGetComponents
solo funciona con algunos colores, consulte stackoverflow.com/questions/9238743/…rect
eso, accidentalmente lo uséself.frame
para la elipse. El valor correcto esself.bounds
. D'oh! :)Aquí hay otra forma usando UIBezierPath (tal vez sea demasiado tarde ^^) Cree un círculo y enmascare UIView con él, de la siguiente manera:
fuente
layerClass
método de clase para convertirlo en una capa de forma.Mi contribución con una extensión Swift:
Solo llama
myView.asCircle()
fuente
masksToBounds
en verdadero y usarself
son todos opcionales en esta respuesta, pero sigue siendo la solución más corta y mejorSwift 3 : clase personalizada, fácil de reutilizar. Utiliza
backgroundColor
set en el generador de IUfuente
Swift 3 clase:
fuente
Otra forma de acercarse al dibujo circular (y otras formas) es usando máscaras. Dibuja círculos u otras formas, primero, haciendo máscaras de las formas que necesita, segundo, proporciona cuadrados de su color y, tercero, aplica máscaras a esos cuadrados de color. Puede cambiar la máscara o el color para obtener un nuevo círculo personalizado u otra forma.
Aquí está la salida del código anterior:
fuente
Hay otra alternativa para la gente perezosa. Puede establecer la
layer.cornerRadius
ruta clave para su vista en el Creador de interfaces . Por ejemplo, si su vista tiene un ancho = alto de 48 , establezcalayer.cornerRadius = 24
:Sin embargo, esto solo funciona si tiene un tamaño estático de la vista
(width/height is fixed)
y no muestra el círculo en el generador de interfaces.fuente
Swift 3 - Xcode 8.1
fuente