cgrect uiedgeinsets

¿Puedo ajustar un CGRect con UIEdgeInsets?



(3)

2018 ... Swift4

Digamos que quiere los límites,

pero por ejemplo menos dos píxeles en la parte inferior :

let ei = UIEdgeInsetsMake(0, 0, 2, 0) // top-left-bottom-right let smaller = UIEdgeInsetsInsetRect(bounds, ei)

Eso es.

Si prefiere escribirlo como una línea , es solo

Tome dos de la parte inferior:

let newBounds = UIEdgeInsetsInsetRect(bounds, UIEdgeInsetsMake(0, 0, 2, 0))

Aclamaciones

Tengo un CGRect y me gustaría ajustarlo con UIEdgeInsets .

Parece que tal vez podría haber una función incorporada que hace esto. He buscado un CGRectAdjustByInsets o funciona con algún otro prefijo de CGRect… pero no encontré nada.

¿Debería codificar el mío?


TL; DR

Use la función UIEdgeInsetsInsetRect(theRect, theInsets) .

Ejemplo

// CGRectMake takes: left, bottom, width, height. const CGRect originalRect = CGRectMake(0, 0, 100, 50); // UIEdgeInsetsMake takes: top, left, bottom, right. const UIEdgeInsets insets = UIEdgeInsetsMake(10, 10, -20, -20); // Apply the insets… const CGRect adjustedRect = UIEdgeInsetsInsetRect(originalRect, insets); // What''s the result? NSLog(@"%@ inset by %@ is %@", NSStringFromCGRect(originalRect), NSStringFromUIEdgeInsets(insets), NSStringFromCGRect(adjustedRect)); // Logs out… // {{0, 0}, {100, 50}} inset by {10, 10, -20, -20} is {{10, 10}, {110, 60}}

Explicación

  • Un recuadro positivo mueve el borde del rectángulo hacia adentro (hacia el centro del rectángulo).
  • Un recuadro negativo mueve el borde hacia afuera (lejos del rectángulo).
  • Un recuadro cero dejará solo el borde.

Dime más

Otras funciones útiles para operar en CGRect están cubiertas por esta nota .


Todavía 2018 ... Swift 4.2

Creo que la nueva forma se ve mejor ...

let newCGRect = oldCGRect.inset(by: UIEdgeInsets(top: 0, left: 8, bottom: 0, right: 8))