IOS视图转换修改框架?

KTa*_*Tas 6 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);
Run Code Online (Sandbox Code Playgroud)

这是输出:

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

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

Til*_*ill 13

请参阅UIView框架属性的参考文档;


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

@property(nonatomic) CGRect frame
Run Code Online (Sandbox Code Playgroud)

警告

如果transform属性不是identity变换,则此属性的值是未定义的,因此应该被忽略.


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