如何从CGPoint和CGSize创建CGRect?

ino*_*nik 48 objective-c quartz-graphics cgpoint ios cgrectmake

我需要为UIImageView不同的集合创建一个框架,CGSize并且CGPoint两个值将始终根据用户的选择而不同.那么如何制作CGRect表格a CGPoint和a CGSize?先感谢您.

Jim*_*Jim 116

Objective-C的两个不同选项:

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

CGRect aRect = { aPoint, aSize };
Run Code Online (Sandbox Code Playgroud)

斯威夫特3:

let aRect = CGRect(origin: aPoint, size: aSize)
Run Code Online (Sandbox Code Playgroud)

  • 这是一个复合文字.它们是C的一部分,在C99中标准化. (7认同)
  • 在XCODE 5中,它提出了:预期的表达式.这是正确的语法:(CGRect){aPoint,aSize} (6认同)
  • @Pion:不,不.该代码工作正常,并且在最新版本的Xcode中不会产生任何警告.我假设你正在使用不同的代码,做一些事情而不是初始化局部变量.如果你想做一些像传递复合文字作为方法参数那样的东西,你需要强制转换,但只是为了初始化局部变量,你不需要强制转换. (3认同)

coc*_*oco 5

基于@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} };
Run Code Online (Sandbox Code Playgroud)