有没有办法在更改横向方向后转换坐标系?

2023-11-24

在基于视图的 iPhone OS 应用程序中,我将方向从初始纵向更改为纵向横向(UIInterfaceOrientationLandscapeRight)。但现在 x,y 原点 (0,0) 位于左下角角(而不是通常的左上角),每次我想做一些涉及坐标的事情时,我都必须重新计算以补偿新的坐标系。我还注意到,我在新坐标系中的视图有时表现不正常。那么,有没有一种方法可以在我切换方向后立即转换坐标系,以便我可以继续将坐标系视为原点在左上 corner?


如果您采用推荐的方法对主视图应用变换以旋转它:

UIInterfaceOrientation orientation = [[UIApplication sharedApplication] statusBarOrientation];
if (orientation == UIInterfaceOrientationLandscapeRight) 
{
    CGAffineTransform transform = primaryView.transform;

    // Use the status bar frame to determine the center point of the window's content area.
    CGRect statusBarFrame = [[UIApplication sharedApplication] statusBarFrame];
    CGRect bounds = CGRectMake(0, 0, statusBarFrame.size.height, statusBarFrame.origin.x);
    CGPoint center = CGPointMake(60.0, bounds.size.height / 2.0);

    // Set the center point of the view to the center point of the window's content area.
    primaryView.center = center;

    // Rotate the view 90 degrees around its new center point.
    transform = CGAffineTransformRotate(transform, (M_PI / 2.0));
    primaryView.transform = transform;
}   

那么添加到该主视图的任何子视图都应该使用标准坐标系。应用于主视图的变换也负责旋转子视图的坐标。这在我的应用程序中非常适合我。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

有没有办法在更改横向方向后转换坐标系? 的相关文章

随机推荐