gpt4 book ai didi

ios - 转换矩形 :toView doesn't return expected window coordinates

转载 作者:塔克拉玛干 更新时间:2023-11-02 10:18:07 26 4
gpt4 key购买 nike

目前,我正在尝试获取 UIWebView 的坐标。这个 webView 是 viewController View 的 subview 。 viewController 包含在 UINavigationController 中。状态栏和导航栏都在屏幕上。

方向为纵向。 View 已模态呈现。

状态栏的高度为 20,导航栏的高度为 44,我希望 webView 的框架(在窗口坐标中)的原点为 (0, 64),宽度为 (320, 416).

但是,当我运行这条线时

CGRect frame = [webView.superview convertRect:webView.frame toView:nil];

我得到 (0, 0) 的原点和 (320, 416) 的宽度。

我需要做什么才能获得我期望的正确来源?我是否错误地使用了这种方法?或者我的期望出于某种原因是错误的?

最佳答案

这很奇怪,完好无损。我用一个非常基本的应用程序进行了测试,该应用程序由一个窗口、一个导航 Controller 、一个 View Controller 和一个 Web View 组成。全部以编程方式创建。代码如下,最后我绘制了所有 View 框架,最后我绘制了转换后的矩形:


- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
self.window = [[[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]] autorelease];
// Override point for customization after application launch.

UIViewController *vc = [[UIViewController alloc] initWithNibName:nil bundle:nil];
UIWebView *wv = [[UIWebView alloc] initWithFrame:CGRectMake(0, 0, 320, 416)];
[wv loadRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:@"http://www.google.com"]]];
[vc.view addSubview:wv];
UINavigationController *nc = [[UINavigationController alloc] initWithRootViewController:vc];
self.window.rootViewController=nc;
self.window.backgroundColor = [UIColor whiteColor];
[self.window makeKeyAndVisible];

NSLog(@"W: %@",NSStringFromCGRect(self.window.bounds));
NSLog(@"NC: %@",NSStringFromCGRect(nc.view.frame));
NSLog(@"VC: %@",NSStringFromCGRect(vc.view.frame));
NSLog(@"WV: %@",NSStringFromCGRect(wv.frame));

NSLog(@"WV->WIN: %@",NSStringFromCGRect([wv.superview convertRect:wv.frame toView:nil]));

return YES;
}

结果如下:

W: {{0, 0}, {320, 480}}NC: {{0, 0}, {320, 480}}VC: {{0, 0}, {320, 416}}WV: {{0, 0}, {320, 416}}WV->WIN: {{0, 64}, {320, 416}}

这就是您所期待的。可能您在将 View 放置在层次结构中的方式上犯了一些错误。例如,您是否正在使用 Interface Builder,在这种情况下,您能否检查您是否没有在 View 位置放置错误的坐标?

关于ios - 转换矩形 :toView doesn't return expected window coordinates,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7915226/

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