gpt4 book ai didi

ios - 如何使用转换点 :toView for convert from view coordinate to window coordinate after rotation

转载 作者:搜寻专家 更新时间:2023-10-30 20:19:20 28 4
gpt4 key购买 nike

我创建了一个新项目作为单 View 应用程序。在 View Controller 中添加了用于将 View 坐标转换为窗口坐标的代码:

- (void) dumpFrame
{
CGRect bounds = self.view.bounds;

// UIView* rootView = [UIApplication sharedApplication].keyWindow.rootViewController.view;
// I tried rootView instead of nil and self.view.superview instead of self.view but got {0,0} coordinate

CGPoint newCoord = [self.view convertPoint: bounds.origin
toView: nil];

bounds.origin.x = newCoord.x;
bounds.origin.y = newCoord.y;
NSLog(@"view.frame=%@", NSStringFromCGRect(bounds));
}

- (void)didRotateFromInterfaceOrientation:(UIInterfaceOrientation)fromInterfaceOrientation
{
[super didRotateFromInterfaceOrientation: fromInterfaceOrientation];
NSLog(@"===>didRotate");
[self dumpFrame];
}

- (void)willRotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration
{
[super willRotateToInterfaceOrientation: toInterfaceOrientation duration: duration];
NSLog(@"===>willRotate");
[self dumpFrame];
}

我的日志:

===>wilRotate
view.frame={{0, 20}, {768, 1004}}
===>didRotate
view.frame={{748, 0}, {1024, 748}}

代替

{{0, 20}, {1024, 748}}

我得到了

{{748, 0}, {1024, 748}}

旋转后。我需要做什么才能获得 {0,20}?我很乐意提供任何帮助。

最佳答案

显然,UIWindow 的坐标系始终保持纵向,并且只需设置 UIWindowtransform 属性即可应用旋转> 的根 VC。从 this SO question 获得此信息.

至少这可以解释为什么您会得到意外的坐标。然而,不幸的是,我一直无法找到一种方法来真正解决您的问题。我认为应该有一种方法可以利用有效的变换矩阵,但我的数学技能达不到这个要求。也许其他人可以介入这里。

编辑

也许你可以用 this code 做点什么(在“iOS Developer's Cookbook”的 GitHub 存储库中)。部分代码在 this article 中进行了解释并附有插图。 .

关于ios - 如何使用转换点 :toView for convert from view coordinate to window coordinate after rotation,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17427987/

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