Używam tego rodzaju metod i wyłączać, ale nigdy naprawdę rozumieć, w jaki sposób zachowywał.jaki sposób - (CGRect) convertRect: (CGRect) rect toview: (UIView *) prace widok
Za każdym razem staram się je wykorzystać, ja znajduję się grzebie w ciemności, staram inny aspekt i nigdy nie wydają się zrobić to, czego oczekuję go.
Dla argumentu, próbuję przekonwertować ramkę dostaję od powiadomienia UIKeyboard użytkownika.
W trybie poziomym, otrzymuję ten NSRect:
UIKeyboardFrameEndUserInfoKey = NSRect: {{406, 0}, {362, 1024}}
Teraz chcę, aby przekształcić go do właściwego rect (swap x/y, szerokość i wysokość), więc robię
CGRect compatibleRect = [self convertRect:[[[notif userInfo] objectForKey:UIKeyboardFrameEndUserInfoKey] CGRectValue] toView:nil];
ale rect staje:
compatibleRect = CGRect: {{406,406}, {362, 1024}}
Każda pomoc będzie mile widziane :)
Rozumiem, jak działają konwersje. Jednak próbuję zrozumieć, jak działa ta konkretna metoda. Użyłem [self.window convertRect: [[[notif userInfo] objectForKey: UIKeyboardFrameEndUserInfoKey] CGRectValue] fromWindow: nil]; aby to zadziałało. Po przejrzeniu następującego linku http://developer.apple.com/iphone/library/documentation/uikit/reference/UIWindow_Class/UIWindowClassReference/UIWindowClassReference.html#//apple_ref/occ/instm/UIWindow/convertRect:fromWindow : Mówi o tym, jak się zachowuje, ale nie bardzo wiadomo, co naprawdę się dzieje. –
W twoim przypadku chcesz użyć convertRect: fromView: not convertRect: toView: so [self convertRect: rect fromView: nil] przejmie granice , to jest na współrzędnych ekranu i przekonwertuj go na lokalne współrzędne widoku. – Elfred