यह काफी पुराना है, लेकिन मैंने इस समस्या को निम्नानुसार हल किया है: चूंकि मुझे 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) अपना दृश्य नियंत्रक प्रस्तुत करें, लेकिन इससे पहले कि नए दृश्य नियंत्रक में, दृश्यदर्शी में एक पारदर्शी दृश्य जोड़ें (मैंने ILTranslucentView का उपयोग किया)
-(void)viewDidLoad
{
[super viewDidLoad];
ILTranslucentView * translucentView = [[ILTranslucentView alloc] initWithFrame:self.view.frame];
[self.view addSubview:translucentView];
[self.view sendSubviewToBack:translucentView];
}
और बस यही!