Mi chiedo, come e quando (viewDidLoad, viewWillAppear, viewDidAppear) posso ottenere una dimensione del frame UIViews che è stata autorizzata per adattarla alla sua vista partent?Come ottenere la dimensione del fotogramma dopo che l'autoresize è terminato
risposta
Non è chiaro dalla tua domanda perché lo vuoi ma immagino che sia per impaginare le tue viste secondarie. Per fortuna di Apple sapeva che si vorrebbe fare e implementato -(void)layoutSubViews
vedono questo: When is layoutSubviews called?
NSLog(@"%f; %f; %f; %f;", yourView.frame.origin.x, yourView.frame.origin.y, yourView.frame.size.width, yourView.frame.size.height);
in questo modo è possibile ottenere cornice della vista
Non risponde alla parte difficile: quando. –
-1: non risponde alla domanda –
ho provato layoutSubviews
, ma viene chiamato più di una volta, che è un problema quando ho bisogno della cornice auto dimensionata per creare un CGContext
da disegnare.
La soluzione che ho usato è stato quello di esporre un metodo init
sulla mia abitudine UIView
per il suo controllore vista padre a chiamare nella sua viewWillAppear
.
Vorrei che ci fosse un modo per realizzare tutto questo all'interno dell'implementazione personalizzata di UIView
, ma mi sfugge (e Google e Apple doc e SO).
- (void)viewDidAppear:(BOOL)animated {
CGFloat uIViewWidth = self.uIView.bounds.size.width;
CGFloat uIViewHeight = self.uIView.bounds.size.height;
CGRect uIViewSize = CGRectMake(0, 0, uIViewWidth, uIViewHeight);
}
Ho (sul iPad) una webView che carica un codice html locale per visualizzare un video di youtube. il div html che contiene il player deve avere le stesse dimensioni della webView. ma dal momento che la mia webview è autorizzata ho bisogno di avere accesso alle sue dimensioni autorizzate. Eppure tutto ciò che ottengo quando si registra il frame sono le dimensioni prima che si verificasse il ridimensionamento. – Jakob
Ciò che mi infastidisce di questo metodo (void) layoutSubViews è che dovrei sottoclassi un UIWebView che vorrei evitare – Jakob
Quindi hai un problema. Perché non riprodurre direttamente il video di YouTube in modo da ottenere un controllo migliore sul layout. Questo è un problema notoriamente difficile da risolvere con le app ibride. Vedi qui http://stackoverflow.com/questions/4459975/iphonehow-to-stream-and-play-youtube-video-with-in-application-using-mpmovieplay per come farlo. –