#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. Имеет смысл. Вернемся к чертежной доске! Спасибо.