设备旋转时CGRect会更改宽度

时间:2012-11-23 10:55:06

标签: objective-c ios cgcontext cgrect

我想绘制一个XoY坐标轴...轴是CGRects ..当设备旋转时它们会改变宽度...我希望它们在所有旋转中保持它们的状态。当设备处于纵向而不是横向时,宽度5.0是否意味着不同的东西?

以下是代码:

   CGContextSaveGState(ctx);
    CGContextSetFillColorWithColor(ctx, [[UIColor whiteColor] CGColor]);

    // the axis is a rect ...
    //axis start point
    CGFloat axisStartX = viewBounds.size.width * LEFT_EXCLUSION_LENGTH_PERCENT;
    CGFloat axisStartY = viewBounds.size.height * UNDER_EXCLUSION_LENGTH_PERCENT;

    CGFloat axisLength = viewBounds .size.height - (viewBounds.size.height * OVER_EXCLUSION_LENGTH_PERCENT) - viewBounds.size.height * UNDER_EXCLUSION_LENGTH_PERCENT;
    CGContextAddRect(ctx, CGRectMake(axisStartX, axisStartY, AXIS_LINE_WIDTH, axisLength));



    CGContextFillPath(ctx);
    CGContextRestoreGState(ctx);

2 个答案:

答案 0 :(得分:2)

我不知道你对这个计算做了什么,但是viewBounds.size.height可能会在轮换时改变,具体取决于它代表什么。但如果它的高度因不同的方向而变化,那么axisLength也会变化。而axisLength是你的rect的高度。

答案 1 :(得分:0)

如果你希望你的每个方向的大小都相同,那么就这样做了!

CGContextSaveGState(ctx);
CGContextSetFillColorWithColor(ctx, [[UIColor whiteColor] CGColor]);

// the axis is a rect ...
//axis start point
CGFloat boxSize = MIN(viewBounds.size.width, viewBounds.size.height);
CGFloat axisStartX = boxSize * LEFT_EXCLUSION_LENGTH_PERCENT;
CGFloat axisStartY = boxSize * UNDER_EXCLUSION_LENGTH_PERCENT;

CGFloat axisLength = boxSize - (boxSize * OVER_EXCLUSION_LENGTH_PERCENT) - boxSize * UNDER_EXCLUSION_LENGTH_PERCENT;
CGContextAddRect(ctx, CGRectMake(axisStartX, axisStartY, AXIS_LINE_WIDTH, axisLength));


CGContextFillPath(ctx);
CGContextRestoreGState(ctx);

这里的想法是,无论方向如何,尺寸都保持不变并在屏幕上可见。

希望有所帮助!