uiimageview - round - ¿Cómo hago un UIImage/-View con esquinas redondeadas CGRect(Swift)
round corner view swift (7)
Estaba cansado de escribir el radio y la máscara del conjunto para enlazar para cada vista. Así que hice la siguiente extensión para UIView. Debería funcionar para todas las subclases de UIView, aunque no lo he probado. La extensión se puede reducir para las Vistas específicas que utilice, por supuesto.
extension UIView {
func setRadius(radius: CGFloat? = nil) {
self.layer.cornerRadius = radius ?? self.frame.width / 2;
self.layer.masksToBounds = true;
}
}
El valor predeterminado será la mitad del ancho de la vista si no le pasa ningún valor específico.
¿Cómo hago un UIImageView con esquinas redondeadas en un Swift iOS Playground?
Por dentro hay que rellenar con un color.
Establecer layer.cornerRadius = 10 en la sección Atributos de tiempo de ejecución definidos por el usuario en el inspector de identidad funciona incluso en elementos repetibles como celdas de tabla.
Intenta esto, funcionó para mí.
self.profileImageView.layer.cornerRadius = self.profileImageView.frame.size.width / 2
self.profileImageView.clipsToBounds = true
Para el marco de imagen de círculo redondeado en Swift, lo que funcionó para mí fue:
self.profileImageView.image = UIImage(named:"profileUser")
self.profileImageView.layer.cornerRadius = self.profileImageView.frame.size.width / 2
self.profileImageView.clipsToBounds = true
Y para añadir una sombra:
self.profileImageView.layer.masksToBounds = NO;
self.profileImageView.layer.cornerRadius = 8;
self.profileImageView.shadowOffset = CGSizeMake(5.0, 5.0);
self.profileImageView.shadowRadius = 5;
self.profileImageView.shadowOpacity = 0.5;
Si desea tener una opción para redondear cada UIImageView
, puede copiar este código en su proyecto sin olvidarse de verificar el clip to bounds
y establecer su valor en true
import UIKit
@IBDesignable
extension UIImageView
{
private struct AssociatedKey
{
static var rounded = "UIImageView.rounded"
}
@IBInspectable var rounded: Bool
{
get
{
if let rounded = objc_getAssociatedObject(self, &AssociatedKey.rounded) as? Bool
{
return rounded
}
else
{
return false
}
}
set
{
objc_setAssociatedObject(self, &AssociatedKey.rounded, newValue, .OBJC_ASSOCIATION_RETAIN_NONATOMIC)
layer.cornerRadius = CGFloat(newValue ? 1.0 : 0.0)*min(bounds.width, bounds.height)/2
}
}
}
let imageView = UIImageView(frame: CGRectMake(0, 0, 100, 100))
imageView.backgroundColor = UIColor.redColor()
imageView.layer.cornerRadius = 8.0
imageView.clipsToBounds = true
Resultado: