objective-c - codigo - como actualizar iphone 4 a ios 9
UIImageView no se coloca correctamente en el iPad(siempre en 0, 0) (1)
Hoy me enfrenté a un extraño problema. Tengo una aplicación que es la misma para iPhone y iPad, es una aplicación universal, sin embargo, hice dos controladores de vista principales, uno para iPhone y otro para iPad. Primero hice la versión de iPhone ... luego copié parte del código en la versión de iPad. Todo parece funcionar bien, excepto mi logotipo UIImageView. Tengo un logotipo que se desliza desde fuera de la pantalla al centro de la barra de navegación. Antes de la animación configuré el UIImageView para que estuviera fuera de la pantalla, por lo que podría deslizarse hacia abajo. Pero, incluso si pongo cualquier valor aleatorio en el marco xyy de uiimageview, todavía está en 0, 0. Es el mismo código que tengo en iPhone y está funcionando bien.
Aquí está mi inicialización.
UIImage *logoText = [UIImage imageNamed:@"logotext.png"];
[logoTextView setUserInteractionEnabled:YES];
logoTextView = [[UIImageView alloc] init];
// I already tried [[UIImageView alloc] initWithFrame:CGRectMake......];
logoTextView.frame = CGRectMake(389, -100, logoText.size.width, logoText.size.height);
logoTextView.image = logoText;
logoTextView.center = CGPointMake(389, -100);
logoTextView.alpha = 1;
[logoTextView addGestureRecognizer:resetGesture];
// [logoTextView setBackgroundColor:[UIColor whiteColor]];
[self.view insertSubview:logoTextView atIndex:10];
Esto realmente debería posicionar el UIImageView en el centro y 100px fuera de la pantalla. Pero nada pasa. Todavía es 0, 0. Lo probé de todas las formas que sé, nada realmente funciona ...
¿Alguien sabe qué hacer? Realmente me ayudaría. :)
EDITAR
Acabo de encontrar la solución ... No sé por qué, pero esto solo funciona si está en un nuevo método ... extraño.
- (void)logoShow {
UITapGestureRecognizer *resetGesture = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(resetValues)];
UIImage *logoText = [UIImage imageNamed:@"[email protected]"];
logoTextView = [[UIImageView alloc] initWithFrame:CGRectMake(389, -50, logoText.size.width/1.35, logoText.size.height/1.35)];
logoTextView.center = CGPointMake(389, -50);
logoTextView.image = logoText;
logoTextView.alpha = 1;
[logoTextView addGestureRecognizer:resetGesture];
[self.view insertSubview:logoTextView atIndex:15];
// LOGO TEXT ANIMATION
[UIView beginAnimations:@"Logo Text Animation" context:nil];
[UIView setAnimationCurve:UIViewAnimationCurveEaseOut];
[UIView setAnimationDelay:4.5];
[UIView setAnimationDuration:0.5];
logoTextView.alpha = 1;
logoTextView.center = CGPointMake(389, 22);
[UIView commitAnimations];
[logoTextView setUserInteractionEnabled:YES];
}
Establecería la vista de logo como la vista de título de mi controlador de vista. En tu -initWithNib (o similar) haz esto:
logoTextView.alpha = 0.0f ;
self.navigationItem.titleView = logoTextView ;
Luego, en su método -viewDidAppear:
haga esto:
CALayer * layer = logoTextView.layer ;
{
CABasicAnimation * anim = [ CABasicAnimation animationWithKeyPath:@"transform" ] ;
anim.fromValue = [ NSValue valueWithCATransfom3D:
CATransform3DMakeTranslate( 0, -100.0f, 0 ) ] ;
[ layer addAnimation:anim forKey:nil ] ;
}
logoTextView.alpha = 1.0f ;
Buena suerte