Saya memiliki UIViewController
pandangan sebagai subview / modal di atas UIViewController
pandangan lain , seperti bahwa subview / modal harus transparan dan komponen apa pun yang ditambahkan ke subview harus terlihat. Masalahnya adalah yang saya miliki adalah subview menunjukkan latar belakang hitam sebagai gantinya memiliki clearColor. Saya mencoba menjadikan UIView
sebagai clearColor bukan latar belakang hitam. Adakah yang tahu apa yang salah dengannya? Setiap saran dihargai.
FirstViewController.m
UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"MainStoryboard" bundle:nil];
UIViewController *vc = [storyboard instantiateViewControllerWithIdentifier:@"SecondViewController"];
[vc setModalPresentationStyle:UIModalPresentationFullScreen];
[self presentModalViewController:vc animated:NO];
SecondViewController.m
- (void)viewDidLoad
{
[super viewDidLoad];
self.view.opaque = YES;
self.view.backgroundColor = [UIColor clearColor];
}
Diselesaikan : Saya memperbaiki masalah. Ini bekerja dengan baik untuk iPhone dan iPad. Pengendali Modal View tanpa latar belakang hitam hanya clearColor / transparan. Satu-satunya hal yang saya perlu perubahan adalah saya diganti UIModalPresentationFullScreen
untuk UIModalPresentationCurrentContext
. Betapa sederhananya itu!
FirstViewController.m
UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"MainStoryboard" bundle:nil];
UIViewController *vc = [storyboard instantiateViewControllerWithIdentifier:@"SecondViewController"];
vc.view.backgroundColor = [UIColor clearColor];
self.modalPresentationStyle = UIModalPresentationCurrentContext;
[self presentViewController:vc animated:NO completion:nil];
PEMBERITAHUAN: Jika Anda menggunakan modalPresentationStyle
properti dari navigationController
:
FirstViewController.m
UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"MainStoryboard" bundle:nil];
UIViewController *vc = [storyboard instantiateViewControllerWithIdentifier:@"SecondViewController"];
vc.view.backgroundColor = [UIColor clearColor];
self.navigationController.modalPresentationStyle = UIModalPresentationCurrentContext;
[self presentViewController:vc animated:NO completion:nil];
PEMBERITAHUAN: Berita buruknya adalah solusi di atas tidak berfungsi di iOS 7. Berita baiknya adalah saya memperbaiki masalah untuk iOS7! Saya meminta bantuan seseorang dan inilah yang dia katakan:
Saat menghadirkan pengontrol tampilan secara modial, iOS menghapus pengontrol tampilan di bawahnya dari hierarki tampilan selama durasi disajikan. Meskipun tampilan pengontrol tampilan yang disajikan secara transparan, tidak ada yang di bawahnya kecuali jendela aplikasi, yang berwarna hitam. iOS 7 memperkenalkan gaya presentasi modal baru UIModalPresentationCustom
,, yang menyebabkan iOS tidak menghapus tampilan di bawah pengontrol tampilan yang disajikan. Namun, untuk menggunakan gaya presentasi modal ini, Anda harus menyediakan delegasi transisi Anda sendiri untuk menangani presentasi dan memberhentikan animasi. Ini diuraikan dalam pembicaraan 'Transisi Ubahsuaian Menggunakan Pengontrol Tampilan' dari WWDC 2013 https://developer.apple.com/wwdc/videos/?id=218 yang juga mencakup cara menerapkan delegasi transisi Anda sendiri.
Anda dapat melihat solusi saya untuk masalah di atas di iOS7: https://github.com/hightech/iOS-7-Custom-ModalViewController-Transitions
modalViewController.modalPresentationStyle = UIModalPresentationOverCurrentContext;
akan memecahkan masalah ini,