Изображение заставки iPhone

#iphone #objective-c

#iPhone #objective-c

Вопрос:

Попытка программно добавить заставку, которая висит в течение определенного времени. У меня уже есть файл Default.png, импортированный в мой проект, и я вижу, что он мерцает как изображение запуска при запуске симулятора. Я не уверен, как заставить Default.png зависать в качестве заставки.

В AppDelegate.m внутри didFinishLaunchingWithOptions я делаю следующее:

 MyViewController *mvc = [[MyViewController alloc] init];
UINavigationController *navController = [[[UINavigationController alloc] initWithRootViewController:mvc] autorelease];
[navController setNavigationBarHidden: YES];
  

MyViewController, как вы могли подозревать, является подклассом UIViewController, и в методе loadView я делаю следующее:

 self.mainView = [[UIView alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
self.view = mainView;
mainView.backgroundColor = [UIColor yellowColor];
  

Затем я создал SplashScreenViewController, также подкласс UIViewController, и в методе loadView я делаю следующее:

 splashView = [[[UIImageView alloc] initWithFrame:CGRectMake(0,0, 320, 480)] autorelease];
splashView.image = [UIImage imageNamed:@"Default.png"];
  

Наконец, вернувшись в AppDelegate, у меня есть следующее после makeKeyAndVisible:

 SplashScreenViewController *splashScreen = [[SplashScreenViewController alloc] init];
splashScreen.modalTransitionStyle = UIModalTransitionStyleCrossDissolve;
[navController presentModalViewController:splashScreen animated:NO];
  

Я думаю, что я просто застрял в понимании того, как связать все подклассы UIViewController вместе и как ссылаться на них из AppDelegate (или должен ли я вообще это делать) и т.д. Любые советы приветствуются. Я могу уточнить, является ли мой вопрос мутным.

Комментарии:

1. Рассматривали ли вы возможность не делать этого? Это нарушение рекомендаций Apple по пользовательскому интерфейсу: developer.apple.com/library/ios/#documentation/UserExperience /…

2. Я не публикую это в App Store, поэтому Apple HIG не применяется.

3. Это делают многие приложения, часто в сочетании с UIProgressView. Само по себе это не вызовет отклонения. Но вы не должны оставлять его на неопределенный срок, если есть проблема с настройкой, например, отсутствие подключения.

4. Почему, скажите на милость, Apple HIG не применима? Это не набор критериев приемлемости, это советы о том, как создавать хорошие приложения.

5. Я объяснил в предыдущем комментарии, почему это неприменимо. Если никто, кроме меня, не увидит результат, я могу отклонить ваши, Apple или чьи-либо еще рекомендации о том, что является приемлемой практикой, особенно когда единственная цель — научить себя внутренней работе приложения. Ваш первоначальный комментарий имел значение, если я не знал о нарушении (я знал). Помимо этого, вы можете либо ответить на вопрос, либо нет. Прискорбно видеть преобладающее отношение «вы даже не должны спрашивать, как сделать что-то, что не соответствует существующему стандарту».

Ответ №1:

Вы можете переместить это в MyViewController ‘s viewDidLoad

 SplashScreenViewController *splashScreen = [[SplashScreenViewController alloc] init];
splashScreen.modalTransitionStyle = UIModalTransitionStyleCrossDissolve;
[navController presentModalViewController:splashScreen animated:NO];
  

Или вы могли бы сделать это в вашем AppDelegate, прежде чем makeKeyAndVisible

 splashView = [[[UIImageView alloc] initWithFrame:CGRectMake(0,0, 320, 480)] autorelease];
splashView.image = [UIImage imageNamed:@"Default.png"];
[self.window addSubview:splashView];
[self.window bringSubviewToFront:splashView];
  

Каков ваш план по отклонению представления?

Комментарии:

1. просто собираюсь создать метод для его удаления, т.Е. dismissView

2. Затем просто вставьте его в делегат приложения, нет необходимости в другом контроллере (appdelegate сам является контроллером).

3. Имеет смысл. Вернемся к чертежной доске! Спасибо.