J'ai un CGRect
, et je voudrais l'ajuster avec un UIEdgeInsets
.
Il semble qu'il y ait peut-être une fonction intégrée qui le fasse. J'ai cherché un CGRectAdjustByInsets
ou des fonctions avec un autre CGRect…
préfixe, mais je n'ai rien trouvé.
Dois-je coder le mien?
Swift 4.2 utilisez theRect.inset(by: theInsets)
.
Objectif C utiliser UIEdgeInsetsInsetRect(theRect, theInsets)
// 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}}
D'autres fonctions utiles pour opérer sur CGRect
s sont couvertes par cette note .
Dis que tu veux les limites,
mais par exemple moins deux pixels sur le en bas:
let ei = UIEdgeInsetsMake(0, 0, 2, 0) // top-left-bottom-right
let smaller = UIEdgeInsetsInsetRect(bounds, ei)
C'est ça.
Enlevez deux du fond:
let newBounds = UIEdgeInsetsInsetRect(bounds, UIEdgeInsetsMake(0, 0, 2, 0))
À votre santé
Je suppose que la nouvelle façon semble meilleure ...
let newCGRect = oldCGRect.inset(by: UIEdgeInsets(top: 0, left: 8, bottom: 0, right: 8))