gpt4 book ai didi

iphone - 如何 - (CGRect)convertRect :(CGRect)rect toView:(UIView *)view work

转载 作者:太空狗 更新时间:2023-10-30 03:28:40 26 4
gpt4 key购买 nike

我一直断断续续地使用那种方法,但从未真正理解它们的行为方式。

每次我尝试使用它们时,我发现自己在尝试不同的方面时陷入黑暗,而且它似乎从来没有达到我期望的效果。

为了争论,我正在尝试转换从 UIKeyboard 的通知中获得的框架。

在横向模式下,我得到这个 NSRect:

UIKeyboardFrameEndUserInfoKey = NSRect: {{406, 0}, {362, 1024}}

现在我想将它转换为正确的矩形(交换 x/y、宽度和高度),所以我这样做了

CGRect compatibleRect = [self convertRect:[[[notif userInfo] objectForKey:UIKeyboardFrameEndUserInfoKey] CGRectValue] toView:nil];

但是矩形变成了:

compatibleRect = CGRect: {{406,406}, {362, 1024}}

任何帮助将不胜感激:)

最佳答案

你用错了。它基本上进行坐标转换。我假设它首先将 rect 从起始 View 转换为窗口坐标,然后从窗口坐标转换回第二个 View 的坐标系。这是一个例子。

您的窗口中有两个 subview ,一个的框架为 {{25,0}, {100, 100}},另一个的框架为 {{50, 50}, {200, 200}}想要将以下 rect {{50, 50}, {50, 50}} 从第一个 subview 转换到第二个 subview 。以下是它的工作原理。

  1. 将矩形从第一个 subview 的坐标转换为窗口坐标:由于我们开始的 subview 的原点为 {25,0},因此我们需要将其转换为窗口坐标。这可以通过将 subview 的原点添加到矩形的原点来完成,因此窗口坐标中的新矩形是 {{75, 50}, {50, 50}}

  2. 将新矩形从窗口坐标转换为第二个 subview 的坐标:我们从矩形 {{75, 50}, {50, 50}} 开始,第二个 subview 的框架是 {{50, 50 }, {200, 200}}。现在我们将第二个 subview 的原点减去 rect 来进行我们的翻译。所以我们最终得到一个翻译后的矩形 {{25, 0}, {50, 50}}

关于iphone - 如何 - (CGRect)convertRect :(CGRect)rect toView:(UIView *)view work,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3382316/

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