Я маю UIViewController
представлення як підпогляд / модальний поверх іншого UIViewController
вигляду, наприклад, що підпогляд / модальний режим повинен бути прозорим, і будь-які компоненти, що додаються до його, повинні бути видимі. Проблема в тому, що у мене є те, що в підрозділі показано чорний фон замість того, щоб мати clearColor. Я намагаюся зробити UIView
як чіткий колір не чорний фон. Хтось знає, що з цим не так? Будь-яка пропозиція високо оцінена.
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];
}
ВИРІШЕНО : Я вирішив проблеми. Це так добре працює як для iPhone, так і для iPad. Контролер модального перегляду без чорного тла просто чіткийКольоровий / прозорий. Єдине , що мені потрібно змінити, я замінив UIModalPresentationFullScreen
на UIModalPresentationCurrentContext
. Як це просто!
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];
ПРИМІТКА. Якщо ви використовуєте modalPresentationStyle
властивість 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];
УВАГА: погана новина полягає в тому, що вищевказане рішення не працює на iOS 7. Хороша новина полягає в тому, що я виправив проблему для iOS7! Я попросив когось про допомогу, і ось що він сказав:
Модально подаючи контролер перегляду, iOS видаляє контролери подання під ним з ієрархії подання протягом тривалості його подання. Незважаючи на те, що вигляд модально представленого контролера перегляду прозорий, під ним немає нічого, крім чорного вікна програми. iOS 7 представив новий модальний стиль презентації UIModalPresentationCustom
, який змушує iOS не видаляти подання під представленим контролером подання. Однак, щоб використовувати цей модальний стиль презентації, ви повинні надати власного делегата переходу для обробки анімаційних презентацій та відхилення. Про це йдеться у розмові "Користувацькі переходи за допомогою контролерів перегляду" від WWDC 2013 https://developer.apple.com/wwdc/videos/?id=218, де також розглядаються способи реалізації власного делегата переходу.
Ви можете побачити моє рішення вищезгаданої проблеми в iOS7: https://github.com/hightech/iOS-7-Custom-ModalViewController-Transitions
modalViewController.modalPresentationStyle = UIModalPresentationOverCurrentContext;
вирішить питання,