我有一个视图,我在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
这是正确的行为还是我错误地应用转换?
答案 0 :(得分:13)
的帧强> 的
框架矩形,用于描述视图的位置和大小 它的超视图坐标系。
@property(nonatomic) CGRect frame
警告
如果transform属性不是identity变换,则值为 此属性未定义,因此应忽略。
尽管有这样的警告,但事情仍然有效。一旦应用了变换(其他标识),帧通常会生成原始视图的投影矩形。 但话说回来,如果您真的想要了解应用转换的框架并使用CGRectApplyAffineTransform来正确获取它,则不应忽略该警告。