Ios 检测方向更改后UIView的旋转宽度/高度

Ios 检测方向更改后UIView的旋转宽度/高度,ios,uiview,uikit,Ios,Uiview,Uikit,我希望能够检查UIView实例,该实例可能已从其原始方向旋转,也可能未从原始方向旋转(例如,通过用户旋转设备),并确定“真实”宽度和高度。这里的“true”意思是,如果在旋转之前,面向肖像的iPad上的视图是768x1024,在侧向旋转之后,我会计算出新的宽度是1024,新的高度是768 如果我将视图的变换应用于其帧属性,似乎如下所示: CGRect rotated = CGRectApplyAffineTransform([myview frame], [myview transform);

我希望能够检查UIView实例,该实例可能已从其原始方向旋转,也可能未从原始方向旋转(例如,通过用户旋转设备),并确定“真实”宽度和高度。这里的“true”意思是,如果在旋转之前,面向肖像的iPad上的视图是768x1024,在侧向旋转之后,我会计算出新的宽度是1024,新的高度是768

如果我将视图的变换应用于其帧属性,似乎如下所示:

CGRect rotated = CGRectApplyAffineTransform([myview frame], [myview transform);

我得到了想要的结果。然而,苹果的文档指出,如果视图的转换不是标识转换,UIView::frame是未定义的,因此依赖此计算可能不是一个好主意?

由于缺少输入,我将使用以下解决方案:

CGRect rotated=CGRectApplyAffineTransform([myview-frame],[myview-transform);


获得正确定向的边界。如果有人有其他解决方案或可以确认这是安全的,我将把答案奖励给他们。

由于缺乏输入,我将使用以下解决方案:

CGRect rotated=CGRectApplyAffineTransform([myview-frame],[myview-transform);


获取正确定向的边界。如果有人有其他解决方案或可以确认这是安全的,我将把答案授予他们。

查看。边界将返回您想要的rect


view.frame
将返回一个矩形,并将转换应用于边界和位置。

view.bounds
将返回所需的矩形


view.frame
将返回一个矩形,并将转换应用于边界和位置。

如果同时转换比例,则边界不起作用。如果同时转换比例,则边界将读取未转换UIviewBounds的矩形。如果同时转换比例,则边界将读取未转换UIview的矩形