gpt4 book ai didi

iphone - CGAffineTransformRotate 应用于 UIView 后宽度和高度增加

转载 作者:太空狗 更新时间:2023-10-30 03:26:18 26 4
gpt4 key购买 nike

我想以编程方式旋转 View ,因为我使用了以下代码:

CGAffineTransform rotateTransform = contentView.transform;
CGAffineTransform rotatenewTransform = CGAffineTransformRotate(rotateTransform,aFloatRotate);
contentView.transform = rotatenewTransform;

当我这样做时,contentView(我的 UIView)的宽度和高度会增加。

我应该怎么做才能使 contentView 保持原样并旋转?

提前致谢。

在这里,我将更详细地解释我的问题:

我的内容 View 包含一个按钮和一个 ImageView 。此 contentView 添加在背景中,并且此 contentView 不应超出此背景边界。

但是当我通过上面的代码旋转这个 contentview 时,contentView 的宽度和高度会增加,所以有时它会超出背景边界。

我希望你能清楚这一点。 :)

最佳答案

宽度和高度(假设您是从 frame.size 获取的)必须更改,因为它们描述了包含整个旋转 View 的最小矩形 - 如果您将矩形旋转 45 度,然后容纳旋转矩形的矩形比原始矩形更宽和更高。

旋转 View 的“实际”大小在 bounds 矩形中仍然可用 - 这在未旋转的 View 内部坐标系中表示。

因此,如果您的原始 frame 是原点 (100,100)、大小 (100,50),则您的旋转 View 将有一个 frame,其中原点和大小是可以适合其中旋转 View 的矩形,在 super View 的坐标系中描述。如果您现在这样做:

CGFloat width = contentView.frame.size.width;

您将获得更改后的值。但是,如果您这样做:

CGFloat width = contentView.bounds.size.width;

您会得到原来的 100 宽度值。

关于iphone - CGAffineTransformRotate 应用于 UIView 后宽度和高度增加,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9093278/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com