繁体   English   中英

设备旋转时CGRect会更改宽度

[英]CGRect changes width when device rotated

我想绘制一个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);

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

如果你希望你的矩形在每个方向都是相同的大小而不是这个!

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);

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

希望有所帮助!

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM