您使用CGRectMake()
函数来构建frames,bounds和其他的矩形参数。它接受四个浮点参数:x
,y
,width
和height
。这是在Quartz绘图中使用的最重要的函数之一。
有时候你会想要从你通常使用的东西来构造一个矩形:points和size。虽然您可以使用组件字段来检索参数,但是您可能会发现,对这些结构特定的有一个更简单的函数。清单2-3从point和size结构体构建一个矩形。
清单 2-3 从Points和Sizes建立矩形
1 | CGRect RectMakeRect(CGPoint origin, CGSize size) |
令人惊讶的是,Quartz不提供一个内置的例程来检索矩形的中心。虽然你可以很容易地通过使用Core Graphics函数得出x和y中点,但是实现一个直接从rect
返回一个点的函数相比较来说更加方便。清单2-4定义了该函数。这是一个我自己在绘图工作中广泛使用的函数。
清单 2-4 检索矩形中心
1 | CGPoint RectGetCenter(CGRect rect) |
围绕一个中心建立一个矩形是另一个常见的任务。例如,您可能希望将文本居中或在点周围放置图形。 清单2-5实现了这个功能。提供一个中心点和一个大小。它返回一个您希望得到的矩形。
清单 2-5 围绕目标点创建矩形
1 | CGRect RectAroundCenter(CGPoint center, CGSize size) |
清单2-6使用清单2-4和2-5中的函数来绘制一个以给定矩形为中心的字符串。它计算出字符串的大小(使用iOS 7 API)和矩形的中心,并围绕该中心构建目标。结果如图2-4所示。
清单 2-6 居中放置一个字符串
1 | NSString *string = @"Hello World"; |
图 2-4 将字符串绘制到矩形的中心。虚线表示目标矩形的轮廓。
另一种处理同一中心问题的方法如清单2-7所示。它需要一个现有的矩形,并将其居中在另一个矩形中,而不是使用大小和目标点。您可以在使用其bounds
属性返回边界矩形的贝塞尔路径时使用此函数。您可以通过调用RectCenteredInRect()
将该路径置于矩形中心。
清单 2-7 居中放置矩形
1 | CGRect RectCenteredInRect(CGRect rect, CGRect mainRect) |
本文翻译自《iOS Drawing Practical UIKit Solutions》作者:Erica Sadun,翻译:Cheng Dong。如果觉得本书不错请购买支持正版:亚马逊购买传送门,本书所有源代码可在GitHub上下载。译者虽然力求做到信,达,雅,但是由于时间仓促加之译者水平十分有限,文中难免会出现不正确,不准确,词不达意,难于理解的地方,还望各位批评指正,共同进步,谢谢。转载请注明出处。