это довольно старый, но я решил ту же проблему следующим образом:
Поскольку мне нужно представить контроллер навигации в iPhone, добавление подпредставления не было жизнеспособным решением.
Итак, что я сделал:
1) Перед представлением контроллера представления сделайте снимок экрана вашего текущего экрана:
UIGraphicsBeginImageContextWithOptions(self.view.bounds.size, self.view.opaque, 0.0);
[self.view.layer renderInContext:UIGraphicsGetCurrentContext()];
UIImage * backgroundImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
2) Создайте контроллер представления, который вы хотите представить, и добавьте фон в качестве подпредставления, отправив его обратно.
UIViewController * presentingVC = [UIViewController new];
UIImageView * backgroundImageOfPreviousScreen = [[UIImageView alloc] initWithImage:backgroundImage];
[presentingVC.view addSubview:backgroundImageOfPreviousScreen];
[presentingVC.view sendSubviewToBack:backgroundImageOfPreviousScreen];
3) Представьте свой контроллер представления, но перед этим в новом контроллере представления добавьте прозрачное представление в viewDidLoad (я использовал ILTranslucentView)
-(void)viewDidLoad
{
[super viewDidLoad];
ILTranslucentView * translucentView = [[ILTranslucentView alloc] initWithFrame:self.view.frame];
[self.view addSubview:translucentView];
[self.view sendSubviewToBack:translucentView];
}
И это все!