#ios #objective-c #uiimageview #background-process
#iOS #objective-c #uiimageview #фоновый процесс
Вопрос:
Я искал решение не делать снимки экрана в кэше при вводе фона. Я обнаружил, что могу сделать это, позвонив UIImageView
AppDelegate
и захватив не мой экран, а пользовательское изображение.
- (void)applicationDidEnterBackground:(UIApplication *)application {
UIImageView *imageView = [[UIImageView alloc] initWithFrame:self.window.bounds];
imageView.tag = 101;
imageView.backgroundColor = [UIColor blackColor];
[UIApplication.sharedApplication.keyWindow.subviews.lastObject addSubview:imageView];
}
- (void)applicationWillEnterForeground:(UIApplication *)application {
UIImageView *imageView = (UIImageView *)[UIApplication.sharedApplication.keyWindow.subviews.lastObject viewWithTag:101];
[imageView removeFromSuperview];
}
Через некоторое время мое приложение выводит пользователя из системы, выдает сообщение об ошибке, что пользователь вышел из системы, и возвращается к основному представлению. Но теперь, когда приложение выходит из системы в фоновом режиме, оно не удаляет его UIImageView
при возврате в приложение. Как мне это удалить UIImageView
?
Комментарии:
1. В методе выхода из системы напишите те же две строки кода, которые вы написали в методе applicationWillEnterForeground
Ответ №1:
Удерживайте изображение с помощью сильного указателя!
@property (strong, nonatomic) UIImageView *imageView;
//...
- (void)applicationDidEnterBackground:(UIApplication *)application {
self.imageView = [[UIImageView alloc] initWithFrame:self.window.bounds];
self.imageView.backgroundColor = [UIColor blackColor];
[UIApplication.sharedApplication.keyWindow.subviews.lastObject addSubview:imageView];
}
- (void)applicationWillEnterForeground:(UIApplication *)application {
[self.imageView removeFromSuperview];
}