điều này khá cũ, nhưng tôi đã giải quyết được vấn đề tương tự như sau: Vì tôi cần trình bày bộ điều khiển điều hướng trong iPhone, nên việc thêm một chế độ xem phụ không phải là một giải pháp khả thi.
Vì vậy, những gì tôi đã làm:
1) Trước khi trình bày bộ điều khiển chế độ xem, hãy chụp ảnh màn hình hiện tại của bạn:
UIGraphicsBeginImageContextWithOptions(self.view.bounds.size, self.view.opaque, 0.0);
[self.view.layer renderInContext:UIGraphicsGetCurrentContext()];
UIImage * backgroundImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
2) Tạo bộ điều khiển chế độ xem bạn muốn trình bày và thêm nền làm chế độ xem phụ, gửi nó trở lại.
UIViewController * presentingVC = [UIViewController new];
UIImageView * backgroundImageOfPreviousScreen = [[UIImageView alloc] initWithImage:backgroundImage];
[presentingVC.view addSubview:backgroundImageOfPreviousScreen];
[presentingVC.view sendSubviewToBack:backgroundImageOfPreviousScreen];
3) Trình bày bộ điều khiển chế độ xem của bạn, nhưng trước đó trong bộ điều khiển chế độ xem mới, hãy thêm một chế độ xem trong suốt trong viewDidLoad (tôi đã sử dụng ILTranslucentView)
-(void)viewDidLoad
{
[super viewDidLoad];
ILTranslucentView * translucentView = [[ILTranslucentView alloc] initWithFrame:self.view.frame];
[self.view addSubview:translucentView];
[self.view sendSubviewToBack:translucentView];
}
Và đó là tất cả!