2012-11-23 76 views
0

我想繪製XoY座標軸...該軸是CGRects ..事情是它們在設備旋轉時改變寬度...我希望他們在所有設備旋轉。當設備處於縱向而不是橫向時,寬度5.0是否意味着不同的事情?當設備旋轉時CGRect改變寬度

下面是代碼:

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

設備**寬度**和**高度**在縱向和橫向模式下具有不同的值,並且您正在使用viewBounds.size會有所不同。 – spider1983

回答

2

我不知道你是幹什麼用此計算,但viewBounds.size.height可能會改變旋轉,這取決於它代表什麼。但是如果它的高度隨着不同的方向而變化,那麼軸的長度也會變化。 axisLength是你的矩形的高度。

+0

viewBounds = self.bounds; – user1028028

+0

好。但是,什麼是自我?意思是,你在這裏繼承什麼。如果它是一個視圖,它嵌套了什麼?爲什麼你期望在輪換期間邊界保持不變? –

+0

想通了... [self setContentMode:UIViewContentModeRedraw];修復了問題 – user1028028

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

這裏的想法是,無論方向是什麼,尺寸在屏幕上都保持相同和可見。

希望有幫助!

+0

它仍然改變大小......當視圖變爲橫向時,水平線變得更細......而垂直線(我用這兩條線)變大了...... – user1028028

相關問題