Я использовал такие методы на и прочь но никогда действительно понял, как они вели себя.
Каждый раз, когда я пытаюсь использовать их, я ввожу по абсолютному адресу в темноте, поскольку я пробую другой аспект, и это никогда, кажется, не делает то, к чему я ожидаю это.
Ради аргумента я пытаюсь преобразовать кадр, который я получаю из уведомления 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}}
Любая справка ценилась бы :)
Вы неправильно его используете. Он в основном выполняет преобразование координат. Я предполагаю, что он начинается с преобразования прямоугольника из начального представления в координаты окна, а затем обратного преобразования из координат окна в систему координат второго представления. Вот пример.
В вашем окне есть два подпредставления, одно с рамкой {{25,0}, {100, 100}}, второе с рамкой {{50, 50}, {200, 200}} Вы хотите перевести следующий прямоугольник {{50, 50}, {50, 50}} из первого подпредставления во второе подпредставление. Вот как это могло бы работать.
преобразовать прямоугольник из скоординированного первого подвида в координаты окна: Поскольку начальная точка субпредставления, с которой мы начинаем, равна {25,0}, нам необходимо преобразовать ее в координаты окна. Это можно сделать, добавив начало субпредставления к началу прямоугольника, так что новый прямоугольник в координатах окна будет {{75, 50}, {50, 50}}
преобразовать новый прямоугольник из координат окна в координаты второго подчиненного представления: мы начинаем с прямоугольника {{75, 50}, {50, 50}}, фрейм второго подчиненного представления равен {{50, 50}, {200, 200}}. Теперь мы вычитаем исходную точку второго подпредставления из прямоугольника, чтобы выполнить перевод. Таким образом, мы получаем преобразованный прямоугольник {{25, 0}, {50, 50}}