IOS视图变换会改变视图的框架大小吗?

6

我有一个视图,在其中使用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个回答

13

请参考UIView的frame属性,该属性描述了视图在其父视图坐标系中的位置和大小。


frame

该属性描述了视图在其父视图坐标系中的位置和大小。

@property(nonatomic) CGRect frame

警告

如果transform属性不是identity transform,那么该属性的值为未定义,因此应该被忽略。


尽管出现了这个警告,但事实上通常情况下仍然可以正常工作。一旦应用了变换(除了identity transform),框架通常会转换成原始视图的投影矩形。 但是,如果您确实想要查找应用了变换的框架并使用CGRectApplyAffineTransform来正确获取它,请不要忽略该警告。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接