适应3.5英寸和4英寸屏幕的绘图形状

时间:2014-01-31 09:08:18

标签: ios iphone coordinates shape drawrect

我是一名新的ios开发人员,这是我的问题。我使用以下代码绘制一个形状:

-(void)drawFirstShape:(float)xcoord :(float)ycoord :(CGContextRef)c {

float cote = 70.0f;
float x = 60.0f;
float y = 35.0f;
CGFloat strokecolor[4] = {1.0f, 1.0f, 1.0f, 1.0f};
CGContextSetStrokeColor(c, strokecolor);
CGContextSetLineWidth(c, 4.0f);
CGContextBeginPath(c);
CGContextMoveToPoint(c, xcoord, ycoord);
CGContextAddLineToPoint(c, xcoord+x, ycoord+y);
CGContextAddLineToPoint(c, xcoord+x, ycoord+cote+y);
CGContextAddLineToPoint(c, xcoord, ycoord+cote+2*y);
CGContextClosePath(c);
CGContextDrawPath(c, kCGPathStroke);
}

- (void)drawRect:(CGRect)rect
{
CGContextRef c = UIGraphicsGetCurrentContext();
[self drawFirstShape:160.0f :100.0f:c];
}

我想创建相对坐标而不是绝对坐标。 目的是稳定此代码,以便在3.5英寸和4英寸屏幕上使用它。有人能帮帮我吗?

1 个答案:

答案 0 :(得分:0)

如果你想使用相对坐标,那么使用相对坐标:) 所有位置和宽度/高度应定义为从0到1的float或double。
然后获得真实的坐标 - 只需将这些相对坐标乘以帧大小(或在您的情况下为矩形),您将获得绝对坐标或大小。

示例(我只是使用了很少更改的代码。请记住,我将大小更改为相对大小,您需要将它们更改为正确的代码):

-(void)drawFirstShape:(float)xcoord :(float)ycoord :(CGContextRef)c inRect:(CGRect)rect{
    xcoord = xcoord*rect.size.width;
    ycoord = ycoord*rect.size.height;

    float cote = 0.07f*rect.size.width;
    float x = 0.05f*rect.size.width;
    float y = 0.025f*rect.size.height;
    CGFloat strokecolor[4] = {1.0f, 1.0f, 1.0f, 1.0f};
    CGContextSetStrokeColor(c, strokecolor);
    CGContextSetLineWidth(c, 4.0f);
    CGContextBeginPath(c);
    CGContextMoveToPoint(c, xcoord, ycoord);
    CGContextAddLineToPoint(c, xcoord+x, ycoord+y);
    CGContextAddLineToPoint(c, xcoord+x, ycoord+cote+y);
    CGContextAddLineToPoint(c, xcoord, ycoord+cote+2*y);
    CGContextClosePath(c);
    CGContextDrawPath(c, kCGPathStroke);
}

- (void)drawRect:(CGRect)rect {
    CGContextRef c = UIGraphicsGetCurrentContext();
    [self drawFirstShape:0.2 :0.1 :c inRect:rect];
}