6

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

圆上的约束设置如下:

在此处输入图像描述

为了让圆圈变大而不是变成椭圆,我必须

  1. 了解预期的纵横比
  2. 自己用 Objective-C 编写代码

有没有办法绕过这种类型的代码?

-(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];
}
4

1 回答 1

4
  1. 创建一个画布,150x120
  2. 创建一个椭圆,10, 10, 100, 100
  3. 创建一个名为 的新变量frame,键入 rectangle:10, 10, 150, 100
  4. 创建一个名为 minimumSide 的新表达式:min(frame.height, frame.width)
  5. position制作一个名为(下)的表达式
  6. 拖动smallestSide到椭圆的高度和宽度
  7. position拖到椭圆的位置


位置(表达式)

 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 的帮助下解决了这个问题,但解决方案实际上非常简单。

于 2015-02-07T00:44:28.183 回答