PaintCode:Circle维持A / R?

时间:2015-02-06 20:06:58

标签: objective-c paint-code

在Paintcode 2中,我在画布内的框架内有一个圆圈。

圆圈的约束设置如下:

enter image description here

为了让圆圈变大并且不变成椭圆,我必须

  1. 了解预期的宽高比
  2. 自己在Objective-C中编码
  3. 这种类型的代码有什么办法吗?

    -(void)drawRect:(CGRect)rect {
        if (rect.size.width > rect.size.height) {
            rect.origin.x = (rect.size.width - rect.size.height) * .5f;
            rect.size.width = rect.size.height;
        } else {
            rect.origin.y = (rect.size.height - rect.size.width) * .5f;
            rect.size.height = rect.size.width;
        }
        NSLog(@"Frame=%@", NSStringFromCGRect(rect));
        [CircleDraw drawCircleWithFrame:rect];
    }
    

1 个答案:

答案 0 :(得分:4)

  1. 创建画布150x120
  2. 创建一个椭圆10, 10, 100, 100
  3. 创建一个名为frame的新变量,输入矩形:10, 10, 150, 100
  4. 创建一个名为smallestSide的新表达式:min(frame.height, frame.width)
  5. 制作一个名为position(下方)
  6. 的表达式
  7. smallestSide拖动到椭圆的高度和宽度
  8. position拖动到椭圆的位置
  9. <小时/> 位置(表达式)

     makePoint(
        frame.x+(frame.width-smallestSide)*0.5,
        frame.y+(frame.height-smallestSide)*0.5
    )
    

    <小时/> 的输出

    - (void)drawCanvas1WithFrame: (CGRect)frame
    {
    
        //// Variable Declarations
        CGFloat smallestSide = MIN(frame.size.height, frame.size.width);
        CGPoint position = CGPointMake(frame.origin.x + (frame.size.width - smallestSide) * 0.5, frame.origin.y + (frame.size.height - smallestSide) * 0.5);
    
        //// Oval Drawing
        UIBezierPath* ovalPath = [UIBezierPath bezierPathWithOvalInRect: CGRectMake(position.x, position.y, smallestSide, smallestSide)];
        [UIColor.grayColor setFill];
        [ovalPath fill];
    }
    

    注意:我在PaintCode的Matt Dunik帮助下解决了这个问题,但解决方案实际上非常简单。