Ho usato questo tipo di metodi, ma non ho mai veramente capito come si sono comportati.Come funziona - (CGRect) convertRect: (CGRect) rect toView: (UIView *) visualizza il lavoro
Ogni volta che tento di usarli, mi ritrovo frugare nel buio mentre cerco aspetto diverso e non è mai sembra di fare quello che mi aspettavo che.
Per ragioni, sto provando a convertire il frame che ottengo dalla notifica di UIKeyboard.
In modalità orizzontale, ottengo questo NSRect:
UIKeyboardFrameEndUserInfoKey = NSRect: {{406, 0}, {362, 1024}}
Ora voglio convertirlo al corretto rect (swap x/y, larghezza e altezza) così faccio
CGRect compatibleRect = [self convertRect:[[[notif userInfo] objectForKey:UIKeyboardFrameEndUserInfoKey] CGRectValue] toView:nil];
ma il rettangolo diventa:
compatibleRect = CGRect: {{406,406}, {362, 1024}}
Qualsiasi aiuto sarebbe apprezzato :)
capisco come funzionano le conversioni. Tuttavia, sto cercando di capire come funziona quel metodo specifico. Ho usato [self.window convertRect: [[[notif userInfo] objectForKey: UIKeyboardFrameEndUserInfoKey] CGRectValue] fromWindow: nil]; per farlo funzionare. Se si verifica il seguente link http://developer.apple.com/iphone/library/documentation/uikit/reference/UIWindow_Class/UIWindowClassReference/UIWindowClassReference.html#//apple_ref/occ/instm/UIWindow/convertRect:fromWindow : Si indica come si comporta, ma non è molto chiaro su cosa stia realmente succedendo –
Nel tuo caso vuoi usare convertRect: fromView: not convertRect: toView: così [self convertRect: rect fromView: nil] prenderà i limiti , cioè nelle coordinate dello schermo e convertirlo nelle coordinate della vista locale. – Elfred