realidad aumentada apps iphone uiview uiimageview circle quartz-core

iphone - aumentada - Cómo hacer una circular UIView



ios 12 (6)

Quiero hacer un UIView o UIImageView que sea un círculo. O un círculo que puedo cambiar el tamaño de usar un control deslizante, y el color de con una vista de selección.


Al menos puedo mostrarte un atajo para dibujar círculos de tamaño arbitrario. Sin OpenGL, no se necesita dibujo de Core Graphics.

Importe el marco QuartzCore para obtener acceso a la propiedad .cornerRadius de su UIView o UIImageView.

#import <QuartzCore/QuartzCore.h>

También agréguelo manualmente a la carpeta de marcos de su proyecto.

Agregue este método a su controlador de vista o donde lo necesite:

-(void)setRoundedView:(UIImageView *)roundedView toDiameter:(float)newSize; { CGPoint saveCenter = roundedView.center; CGRect newFrame = CGRectMake(roundedView.frame.origin.x, roundedView.frame.origin.y, newSize, newSize); roundedView.frame = newFrame; roundedView.layer.cornerRadius = newSize / 2.0; roundedView.center = saveCenter; }

Para usarlo, simplemente páselo por UIImageView y un diámetro. Este ejemplo supone que tiene un UIImageView llamado "circ" agregado como una subvista a su vista . Debe tener un backgroundColor configurado para que pueda verlo.

circ.clipsToBounds = YES; [self setRoundedView:circ toDiameter:100.0];

Esto solo maneja UIImageViews pero puedes generalizarlo a cualquier UIView .

NOTA: desde iOS 7, clipToBounds necesita SÍ.


Como se mencionó en algunos comentarios, @IBDesignable hace esto mucho más fácil ahora, por lo que puede usar el Interface Builder para configurar su UIImageView redondeado.

Primero crea una clase llamada RoundedImageView.swift y RoundedImageView.swift este código:

import UIKit @IBDesignable public class RoundedImageView: UIImageView { override public func layoutSubviews() { super.layoutSubviews() //hard-coded this since it''s always round layer.cornerRadius = 0.5 * bounds.size.width } }

Seleccione UIImageView en InterfaceBuilder y cambie la clase de UIImageView a la vista de imagen redondeada personalizada:

Establezca Clip to Bounds en true (o la imagen se extenderá más allá del círculo):

Debería redondearse allí mismo en InterfaceBuilder, que es bastante ingenioso. ¡Asegúrate de establecer el ancho y la altura con los mismos valores o tendrá la forma de un zeppelin!


Necesitas hacer una UIView transparente (color de fondo alfa de 0) y luego, en su drawRect :, dibujar tu círculo usando llamadas de CoreGraphics. También podría editar la capa de la vista y darle una esquinaRadius.


No hay necesidad de llamadas de gráficos. Simplemente ajuste el radio de la esquina al ancho / 2. Esto se puede hacer en cualquier objeto visual, es decir, elemento UI


Si alguien está buscando el equivalente de Swift que a continuación está la respuesta (Xcode7.2):

(Para que esto funcione, la altura y el ancho deben ser iguales).

extension UIView { func makeCircular() { self.layer.cornerRadius = min(self.frame.size.height, self.frame.size.width) / 2.0 self.clipsToBounds = true } }


// For those looking to round the corners of an image view imageView.layer.cornerRadius = imageView.bounds.size.width/2; imageView.layer.masksToBounds = YES;