web-dev-qa-db-fra.com

Comment créer un CGRect à partir d'un CGPoint et d'un CGSize?

Je dois créer un cadre pour un UIImageView à partir d'une collection variable de CGSize et CGPoint, les deux valeurs seront toujours différentes selon les choix de l'utilisateur. Alors, comment puis-je créer un CGRect forme un CGPoint et un CGSize? Merci d'avance.

44
inorganik

Deux options différentes pour Objective-C:

CGRect aRect = CGRectMake(aPoint.x, aPoint.y, aSize.width, aSize.height);

CGRect aRect = { aPoint, aSize };

Swift 3:

let aRect = CGRect(Origin: aPoint, size: aSize)
111
Jim

En s'appuyant sur l'excellente réponse de @Jim, on peut également construire un CGPoint et un CGSize en utilisant cette méthode. Donc, ce sont aussi des façons valables de faire un CGRect:

CGRect aRect = { {aPoint.x, aPoint.y}, aSize };
CGrect aRect = { aPoint, {aSize.width, aSize.height} };
CGRect aRect = { {aPoint.x, aPoint.y}, {aSize.width, aSize.height} };
4
coco
CGRectMake(yourPoint.x, yourPoint.y, yourSize.width, yourSize.height);
3
rooster117

vous pouvez utiliser une syntaxe de sucre. Par exemple:

C'est quelque chose comme un bloc de construction que vous pouvez utiliser pour un code plus lisible:

CGRect rect = ({
   CGRect customCreationRect

   //make some calculations for each dimention
   customCreationRect.Origin.x = CGRectGetMidX(yourFrame);
   customCreationRect.Origin.y = CGRectGetMaxY(someOtherFrame);

   customCreationRect.size.width = CGRectGetHeight(yetAnotherFrame);
   customCreationRect.size.height = 400;

   //By just me some variable in the end this line will
   //be assigned to the rect va
   customCreationRect;
)}
0
Nikolay Shubenkov