Pregunta

Quiero hacer un UIView o UIImageView que es un círculo. O un círculo que puedo cambiar el tamaño de la utilización de un control deslizante, y el color de una pickerview.

¿Fue útil?

Solución

lo que pueda, al menos, que muestran un acceso directo para dibujar círculos de tamaño arbitrario. Sin OpenGL, sin Graphics Core dibujo necesaria.

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

#import <QuartzCore/QuartzCore.h>

También añadir manualmente a la carpeta de los marcos de su proyecto.

Añadir este método para el controlador de vista o donde quiera que 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, sólo tiene que pasar un UIImageView y un diámetro. En este ejemplo se supone que tiene una UIImageView llamado "circ" añadido como subvista a la vista . Debe tener un backgroundColor configurar para que pueda verlo.

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

Esto sólo se encarga de UIImageViews pero se puede generalizar a cualquier UIView .

Nota: Desde iOS 7, ClipToBounds necesitan YES

.

Otros consejos

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

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

(Para que esto funcione altura y anchura debe ser igual.)

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

enter Descripción imagen aquí

No hay necesidad de llamadas de gráficos. Sólo hay que establecer el radio de esquina a la anchura / 2. Esto se puede hacer en cualquier objeto visual es decir UI elemento

Como se ha mencionado en algunos comentarios, @IBDesignable hace esto mucho más fácil ahora, para que puedas utilizar el Interface Builder para configurar su redondeada UIImageView.

En primer lugar crear una clase llamada RoundedImageView.swift y pega este código para él:

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 el UIImageView en InterfaceBuilder y cambiar la clase de UIImageView a la RoundedImageView personalizado:

introducir descripción de la imagen aquí

Set Clip to Bounds a verdadero (o el pic se extenderá más allá del círculo):

introducir descripción de la imagen aquí

Ahora debe alrededor de sí mismo allí mismo, en InterfaceBuilder, que es bastante ingenioso. Asegúrese de ajustar el ancho y la altura de los mismos valores o que va a tener la forma de un zeppelín!

introducir descripción de la imagen aquí

Es necesario hacer una UIView transparente (color de fondo alfa de 0), y luego, en su drawRect :, llamar su círculo usando CoreGraphics llamadas. También puede editar la capa de la vista, y darle un CornerRadius.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top