IOS视图转换修改框架?

时间:2012-05-23 01:14:02

标签: iphone objective-c ios5

我有一个视图,我在drawRect中做一些特定的绘图。这些图纸是动态的,基于视图的宽度和高度。然后,包含它的视图对其应用旋转变换。然而,这个转换似乎调整了我的视图框架的值,这会影响我在drawRect中的绘图。

的NSLog(@ “之前:%F,%F,%F,%F”,button.frame.origin.x,button.frame.origin.y,button.frame.size.width,button.frame。 size.height);

    CGAffineTransform currentTransform = button.transform;
    CGAffineTransform transformRotate = CGAffineTransformMakeRotation(degreesToRadians);
    button.transform = transformRotate;

    NSLog(@"after:%f,%f,%f,%f",button.frame.origin.x,button.frame.origin.y,button.frame.size.width,button.frame.size.height);

这是输出:

之前:50.000000,100.000000,150.000000,50.000000 后:65.849365,47.548096,118.301262,154.903809

这是正确的行为还是我错误地应用转换?

1 个答案:

答案 0 :(得分:13)

请参阅UIView's frame property;

上的参考文档

  

框架矩形,用于描述视图的位置和大小   它的超视图坐标系。

@property(nonatomic) CGRect frame

警告

  

如果transform属性不是identity变换,则值为   此属性未定义,因此应忽略。


尽管有这样的警告,但事情仍然有效。一旦应用了变换(其他标识),帧通常会生成原始视图的投影矩形。 但话说回来,如果您真的想要了解应用转换的框架并使用CGRectApplyAffineTransform来正确获取它,则不应忽略该警告。