CGRectInset和CGRectOffset

今天,了解了一下对CGRect操作的两个方法:CGRectInset和CGRectOffset。两者的作用都是通过参数改变CGRect并返回一个CGRect类型的数据。
两者的区别:CGRectInset会进行平移和缩放两个操作。CGRectOffset做的只是平移。

具体是怎么平移和缩放的呢?看代码!

CGRectInset:

CGRectInset(CGRect rect, CGFloat dx, CGFloat dy),三个参数。rect:待操作的CGRect;dx:为正数时,向右平移dx,宽度缩小2dx。为负数时,向左平移dx,宽度增大2dx;dy:为正数是,向下平移dy,高度缩小2dy。为负数是,向上平移dy,高度增大2dy。

    UIView *redView = [[UIView alloc] initWithFrame:CGRectMake(20, 60, 200, 200)];
    redView.backgroundColor = [UIColor redColor];
    [self.view addSubview:redView];
    
    //通过对redView的frame进行改变,来设置blueview的frame
    CGRect blueFrame = CGRectInset(redView.frame, 40, 40);
    
    UIView *blueView = [[UIView alloc] initWithFrame:blueFrame];
    blueView.backgroundColor = [UIColor blueColor];
    [self.view addSubview:blueView];
CGRectInset和CGRectOffset_第1张图片
效果图 1

CGRectOffset:

CGRectOffset(CGRect rect, CGFloat dx, CGFloat dy),三个参数。rect:待操作的CGRect;dx:为正数时,向右平移dx。为负数时,向左平移dx;dy:为正数时,想下平移dy。为负数时,向上平移dy。

    UIView *redView = [[UIView alloc] initWithFrame:CGRectMake(20, 60, 200, 200)];
    redView.backgroundColor = [UIColor redColor];
    [self.view addSubview:redView];
    
    //通过对redView的frame进行改变,来设置blueview的frame
    CGRect blueFrame = CGRectOffset(redView.frame, -10, 60);
    
    UIView *blueView = [[UIView alloc] initWithFrame:blueFrame];
    blueView.backgroundColor = [UIColor blueColor];
    [self.view addSubview:blueView];
CGRectInset和CGRectOffset_第2张图片
效果图 2

你可能感兴趣的:(CGRectInset和CGRectOffset)