iphone - 转换点 :toView: in landscape mode giving wrong values

标签 iphone objective-c cocoa-touch

我有一个在横向模式下创建的 View (在旋转等很久之后)。
在这个 View 中,我想找到一个相对于主窗口的点。
以下代码在纵向模式下工作,但在横向模式下它仍然返回值,就好像它在纵向模式下一样。

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

已解决

这解决了问题并给出了正确的坐标:

[self convertPoint:self.bounds.origin toView:[UIApplication sharedApplication].keyWindow.rootViewController.view];

最佳答案

您不能使用主窗口计算相对坐标。主窗口接收旋转事件并将它们传递给 Controller ​​,这意味着它本身不会改变大小(始终具有相同的纵向边界)。这就是为什么您找到的解决方案有意义:您找到相对于根 Controller View 的坐标,该 Controller 确实接收旋转事件并相应地更改其大小

关于iphone - 转换点 :toView: in landscape mode giving wrong values,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6452716/

相关文章:

iphone - iPhone 3.0 上的 UIColor 限制或错误

iphone - NSInvalidArgumentException 异常

iphone - 如何从推送 segue 中解雇带有 Storyboard的 viewController?

iphone - 在 UIWebView 中从 NSData 加载 UIImage 并将其居中

ios - LaunchScreen.storyboard 的背景图像

iphone - 构建更好的位置音频 [AudioQueue 操作]

iphone - 当我绘图时,如何摆脱行之间的 "points"?

objective-c - 在越狱设备上使用 loadNibNamed 时可能会崩溃 [UIDeviceRGBColor superview] : unrecognized selector

ios - ios中的多个搜索栏实现

ios - 根据 UIScrollView 的内容偏移移动 ​​UIView