2009-11-18 3 views
3

Я занимаюсь довольно много последних месяцев с помощью UIImagePickerController, особенно с новыми возможностями в OS3.1 и более новыми для просмотра сверху на экране камеры. Это сработало отлично.Отображение UIImagePickerController в другом UIView

Тем не менее, я в настоящее время работаю над проектом, в котором я хотел бы отображать представление камеры UIImagePickerController в существующем виде. По сути, полная противоположность тому, что я сейчас делаю.

Примером может служить контроллер просмотра с компонентами навигации (считайте верхние и нижние горизонтальные полосы с градиентами), а при нажатии кнопки на одной из этих полосок область содержимого отображает вид камеры. Анимация затвора должна была бы подняться, а верхняя и нижняя панели навигации оставались бы всегда сверху.

У меня был успех, добавив UIImagePickerController в окно, а также представляя его по-разному, но не успел добавить его в качестве подвид.

например:

[window addSubview:camera.view]; 
[self presentModalViewController:camera animated:YES]; 
+0

От DOCO: «Важно: Класс UIImagePickerController поддерживает только портретный режим Этот класс предназначен для использования как есть и не делает. Поддержка иерархии представления для этого класса является частной и не должна быть изменена. «Все просто. – Fattie

+0

Это просто ** presentViewController **, не используйте модальные. Итак, [self presentViewController: ipc animated: YES complete: NULL]; – Fattie

ответ

0

Я не думаю, что API обеспечивает прямой доступ к актуальной ввиду UIImagePickerController. Класс на самом деле является подклассом UINavigationController, поэтому я не думаю, что он имеет фактическое представление, а скорее управляет вызовом его субконтроллеров и их представлений.

Когда вы вызываете UIImagePickerController modally, он не добавляет виды, которые он контролирует, в качестве подзонов в окно (или любое другое представление). Это то, что означает модальный вид. Он отображает представление «стороны» иерархии представлений.

Даже если вы могли бы взломать это вместе, я думаю, что Apple отвергнет его как не входящее в API и за нарушение HIG.

+1

UIImagePickerController - это подкласс UIViewController, который имеет свойство view, поэтому должно быть хорошо использовать это свойство view как подзаголовок другого UIView. – jjxtra

2

Call viewWillAppear: ДА на контроллере выбора изображений после добавления его вида в ваш вид. Пропустите бизнес диспетчера модального просмотра.

+0

Просто попробовал это и отобразился вид камеры, но объектив не открывается. Он просто остается застрявшим на этом графике с закрытым объективом. Не уверен, что это все еще проблема или нет. Вот что я сделал: [self.view addSubview: camera.view]; [просмотр камерыWillAppear: YES]; – u2elan

+0

call viewDidAppear – Tony

6

Все, что вам нужно сделать, это вызвать viewWillAppear и viewDidAppear.

Вот пример, где _pickerController является экземпляром UIImagePickerController:

[self.view addSubview:_pickerController.view]; 
[_pickerController viewWillAppear:YES]; 
[_pickerController viewDidAppear:YES]; 
+0

Это позволяет мне отображать камеру как подвид любого вида (объектив открывается, и все в порядке). Тем не менее, верхняя панель с часами, индикатором батареи и т. Д. Исчезает и превращается в белую полосу. Я думаю, UIImagePickerController не предназначен для использования при показе верхней панели. – Jano

+0

NOt обязательно. Я всегда удаляю строку состояния. – jj0b

+0

Спасибо.Я только что добавил [self.pickerForProfilePicture.view removeFromSuperview]; – YaBoiSandeep

Смежные вопросы