Como hacer un UIView circular
-
18-09-2019 - |
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.
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;
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:
Set Clip to Bounds
a verdadero (o el pic se extenderá más allá del círculo):
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!
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.