2014-02-16 31 views
0

我的代码那样:我用CGAffineTransformMakeRotation以旋转的标签,为什么只有文本旋转

[label2 setTransform:CGAffineTransformMakeRotation(-M_PI/2)]; 

循环之前一样遵循

enter image description here

enter image description here旋转后

任何人都可以告诉我为什么,谢谢?

+0

你是如何绘制绿色的矩形?它只是文本字段的背景颜色?如果是这样,那么它可能绘图正确。更改转换不会转换其容器内视图的边界矩形 - 只能在视图内绘制。如果你想改变视图的框架,你需要手动完成。 – user1118321

+0

@ user1118321先谢谢。如果是这样,我怎样才能旋转标签框架的任何角度? – Dracuuula

+0

@Dracuuula这里角度以弧度表示,只需设置合适的值以进行旋转,并且如果需要,您可以执行转换以标记超级视图 – sage444

回答

0

你可以做这样的事情:

-(NSPoint)rotatePoint:(NSPoint)inPt 
      aroundPoint:(NSPoint)center 
      withAngle:(double)radians 
{ 
    NSPoint temp = {inPt.x - center.x, inPt.y - center.y}; 
    double sinAngle = sin(radians); 
    double cosAngle = cos(radians); 
    NSPoint result; 
    result.x = temp.x * cosAngle - temp.y * sinAngle; 
    result.y = temp.x * sinAngle + temp.y * cosAngle; 

    result.x += center.x; 
    result.y += center.y; 
} 

然后调用上述方法的4个角你旋转视图的框架,而框架设置为新值。

+0

我明白你说的是什么,但是有没有API设置框架与4角的价值? – Dracuuula

+0

我不这么认为。您可以转换4个点,然后取x和y坐标的最小值和最大值,然后使用这些值创建新的矩形。 – user1118321