Мне нужно создать фрейм для UIImageView
из различного набора CGSize
и CGPoint
, оба значения всегда будут отличаться в зависимости от выбора пользователя. Итак, как я могу сделать форму CGRect
a CGPoint
и a CGSize
? Заранее благодарю вас.
Как создать CGRect из CGPoint и CGSize?
Ответ 1
Две различные опции для 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)
Ответ 2
Основываясь на самом превосходном ответе от @Jim, с помощью этого метода можно также построить CGPoint и CGSize. Таким образом, это также допустимые способы создания 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} };
Ответ 3
CGRectMake(yourPoint.x, yourPoint.y, yourSize.width, yourSize.height);
Ответ 4
вы можете использовать синтаксис сахара. Например:
Это что-то вроде строительного блока, который вы можете использовать для получения более читаемого кода:
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;
)}