Ok Quiero agregar un UIImageView como una subvista y luego eliminarlo después de unos segundos en la forma en que funciona la pantalla de bienvenida. Encontré tres enfoques diferentes para hacerlo, pero no puedo entender cuál es el mejor enfoque según Objective-C y Apple.iOS: agregar/eliminar una subvista mediante programación
A continuación se presentan los tres enfoques diferentes:
1) En mi MyAppDelegate.h
@interface MyAppDelegate : NSObject <UIApplicationDelegate> {
MyViewController *myViewController;
UIImageView *myImageView;
}
@property (nonatomic, retain) IBOutlet MyViewController *myViewController;
@property (nonatomic, retain) IBOutlet UIWindow *window;
@end
y en MyAppDelegate.m
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
myImageView =[[UIImageView alloc] initWithFrame:CGRectMake(0.0,0.0,self.window.frame.size.width,self.window.frame.size.height)];
myImageView.image=[UIImage imageNamed:@"Yoga.png"];
[self.window addSubview:myImageView ];
[self.window bringSubviewToFront:myImageView];
[self performSelector:@selector(removeImage) withObject:nil afterDelay:2.5];
return YES;
}
-(void) removeImage
{
[myImageView removeFromSuperview];
[myImageView release];
[self.window addSubview:myViewController.view];
[self.window makeKeyAndVisible];
}
2) en el segundo enfoque:
In my MyAppDelegate.h
@interface MyAppDelegate : NSObject <UIApplicationDelegate> {
MyViewController *myViewController;
UIImageView *myImageView;
}
@property (nonatomic, retain) IBOutlet UIImageView *myImageView;
@property (nonatomic, retain) IBOutlet MyViewController *myViewController;
@property (nonatomic, retain) IBOutlet UIWindow *window;
@end
y en MyAppDelegate.m
@synthesize myImageView;
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
myImageView =[[UIImageView alloc] initWithFrame:CGRectMake(0.0,0.0,self.window.frame.size.width,self.window.frame.size.height)];
myImageView.image=[UIImage imageNamed:@"Yoga.png"];
[self.window addSubview:myImageView ];
[self.window bringSubviewToFront:myImageView];
[self performSelector:@selector(removeImage) withObject:nil afterDelay:2.5];
return YES;
}
-(void) removeImage
{
[myImageView removeFromSuperview];
[myImageView release];
[self.window addSubview:myViewController.view];
[self.window makeKeyAndVisible];
}
- (void)dealloc
{
[myViewController release];
[myImageView release];
}
3) en el tercer enfoque:
In my MyAppDelegate.h
@interface MyAppDelegate : NSObject <UIApplicationDelegate> {
MyViewController *myViewController;
}
@property (nonatomic, retain) IBOutlet MyViewController *myViewController;
@property (nonatomic, retain) IBOutlet UIWindow *window;
@end
y en MyAppDelegate.m
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
UIImageView *myImageView =[[UIImageView alloc] initWithFrame:CGRectMake(0.0,0.0,self.window.frame.size.width,self.window.frame.size.height)];
myImageView.image=[UIImage imageNamed:@"Yoga.png"];
myImageView.tag=22;
[self.window addSubview:myImageView ];
[myImageView release];
[self.window bringSubviewToFront:myImageView];
[self performSelector:@selector(removeImage) withObject:nil afterDelay:2.5];
return YES;
}
-(void) removeImage
{
for (UIView *subview in [self.view subviews]) {
if (subview.tag == 22){
[subview removeFromSuperview];
}
}
[self.window addSubview:myViewController.view];
[self.window makeKeyAndVisible];
}
- (void)dealloc
{
[myViewController release];
}
lo que en definitiva .. El primer enfoque no utiliza una propiedad para el UIImage solo una variable, el segundo usa una propiedad y el tercero solo crea el UIImage y lo agrega como una subvista y luego lo elimina según su etiqueta ...
Cuál es el enfoque correcto a seguir ... Creo que las tres opciones suenan bien ... Pero, ¿hay alguna manera en particular que deba seguir? ¿Alguna de estas opciones es mejor en términos de memoria y rendimiento?
Gracias de antemano,
Andreas
pregunta Técnica lado Tener pantallas de inicio que retrasan artificialmente al usuario llegar a utilizar la aplicación es un mal diseño móvil y no es lo que sugiere el iPhone HIG. – Nick
la pregunta no es sobre la pantalla de bienvenida. Se trata de elegir la forma correcta de implementar algo ...¡Este ejemplo podría ser una pregunta para algo completamente irrelevante con pantallas de bienvenida! Se trata de la forma correcta de agregar una subvista y luego eliminarla .. – andreasv
El primer enfoque parece correcto pero no necesita inicializar su UIImageView ya que es un Outlet, simplemente active el método luego del tiempo de demora que desea y quítelo de la supervista que puede ser tu viewController –