iOS:被忽略的CGGeometry

CGGeometry

CGGeometry是2D绘图的一个库,定义了基本的几何元素:CGPoint、CGSize、CGRect。

CGRectOffset

CGRect CGRectOffset(CGRect rect, CGFloat dx, CGFloat dy);

返回一个原点在源矩形基础上进行了偏移的矩形。

例子:

CGRect rect = CGRectMake(45, 40, 
                        CGRectGetWidth(self.view.frame) - 90, 
                        CGRectGetWidth(self.view.frame) - 90);
UIView *rectView = [[UIView alloc] init];
[rectView setFrame:rect];
[rectView setBackgroundColor:[UIColor cyanColor]];
[self.view addSubview:rectView];
    
CGRect offRect = CGRectOffset(rect, 10, 10);
UIView *offRectView = [[UIView alloc] init];
[offRectView setFrame:offRect];
[offRectView setBackgroundColor:[UIColor magentaColor]];
[self.view addSubview:offRectView];
CGRectOffset

CGRectInset

CGRect CGRectInset(CGRect rect, CGFloat dx, CGFloat dy);

返回一个与源矩形共中心点的,或大些或小些的新矩形。

矩形将围绕它的中心点进行缩放,左右分别增减dx(总共2dx),上下分别增减 dy(总共 2dy)。

例子:

CGRect insetRect = CGRectInset(rect, 20, 20);
UIView *insetRectView = [[UIView alloc] init];
[insetRectView setFrame:insetRect];
[insetRectView setBackgroundColor:[UIColor orangeColor]];
[self.view addSubview:insetRectView];
CGRectInset

CGRectDivide

void CGRectDivide(CGRect rect, CGRect * slice, CGRect * remainder, CGFloat amount, CGRectEdge edge);

将源矩形分为两个子矩形。

CGRectDivide用以下方式将矩形分割为两部分:

  • 传入一个矩形并选择一条edge(上,下,左,右);
  • 平行那个边在矩形里量出amount的长度;
  • edge到量出的amount区域都保存到slice参数中;
  • 剩余的部分保存到remainder参数中。

其中edge参数是一个CGRectEdge枚举类型:

enum CGRectEdge { 
    CGRectMinXEdge, //左 
    CGRectMinYEdge, //上 
    CGRectMaxXEdge, //右 
    CGRectMaxYEdge  //下
}

例子:

CGRect rect1 = CGRectZero;
CGRect rect2 = CGRectZero;
CGRectDivide(rect, &rect1, &rect2, CGRectGetWidth(rect) / 3, CGRectMinXEdge);
    
UIView *rectView1 = [[UIView alloc] init];
[rectView1 setFrame:CGRectOffset(rect1, 0, CGRectGetHeight(rect) + 20)];
[rectView1 setBackgroundColor:[UIColor greenColor]];
[self.view addSubview:rectView1];
    
UIView *rectView2 = [[UIView alloc] init];
[rectView2 setFrame:CGRectOffset(rect2, 0, CGRectGetHeight(rect) + 20)];
[rectView2 setBackgroundColor:[UIColor blueColor]];
[self.view addSubview:rectView2];
CGRectMinXEdge

不同CGRectEdge

  • CGRectMinYEdge
  • CGRectMaxXEdge
  • CGRectMaxYEdge

其他

  • CGRectZero: 一个原点在(0, 0),且长宽均为 0 的常数矩形。这个零矩形与CGRectMake(0.0f, 0.0f, 0.0f, 0.0f) 是等价的。
  • CGRectNull: 空矩形。这个会在,比如说,求两个不相交的矩形的相交部分时返回。注意,空矩形不是零矩形
  • CGRectInfinite: 无穷大矩形。
  • CGRectGetHeight: 返回矩形的高度。
  • CGRectGetWidth: 返回矩形的宽度。
  • CGRectIntegral: 返回包围源矩形的最小整数矩形。
  • CGRectGet[Min|Mid|Max][X|Y]:返回矩形x或y的最小、中间或最大值。

参考

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容