Пользовательские элементы управления камерой iPhone (не используя UIImagePickerController)
Хотя я понимаю, что для того, чтобы приложение iPhone было принято в App Store, одним из требований является использование только документированных библиотек.
Если это так, то как некоторые приложения, такие как "Ночная камера" и "Камера Плюс", используют управление камерой, которое похоже на нечто, отличное от того, которое содержится в UIImagePickerController?
Я слышал о некоторых случаях, когда разработчику был предоставлен "специальный" доступ к определенным заголовкам, которые позволяют использовать функции, которые в противном случае были бы невозможны, если бы они были ограничены только использованием документированных библиотек. Однако, учитывая, насколько непрозрачный процесс выбора приложений для App Store, я предпочел бы придерживаться того, что рекомендуется, а не принимать мои шансы.
Кто-нибудь хочет пролить свет на это?
Ответы
Ответ 1
Возможно, вы захотите проверить classdump заголовков явных частных ящиков. Запустите этот perl script:
http://arstechnica.com/apple/news/2008/11/dumping-the-iphone-2-2-frameworks.ars
и перейдите в каталог PhotoLibrary в разделе PrivateFrameworks. Некоторые из классов здесь выглядят довольно многообещающими для прямого доступа к камерам.
Использование недокументированного API может повредить вашим шансам пройти через магазин приложений, но все это очень субъективно. Если ваш продукт хорош, яблоко, вероятно, позволит ему проскользнуть. Я бы рекомендовал подружиться с евангелистом-разработчиком в Apple.
Ответ 2
Вы видели это дело?
http://blog.airsource.co.uk/index.php/2008/11/11/views-of-uiimagepickercontroller/
и этот пример кода для пользовательского выбора?
http://www.codza.com/custom-uiimagepickercontroller-camera-view
надеюсь, что это поможет.
Ответ 3
UIImagePickerController - это подкласс UIViewController, который управляет иерархией представлений. Вы можете играть с иерархией представлений, поскольку эти приложения есть, но это рискованно, учитывая, что Apple не документирует его и может изменить его при любом обновлении ОС.
Я не слышал, чтобы кому-то предоставлялся специальный доступ к библиотекам, но я прочитал, что существует незначительное различие между недокументированными классами и методами и частными структурами. Недокументированные классы - это серая область, но частные рамки определенно не разрешены.
Ответ 4
Простым объяснением является то, что приложения в магазине не должны использовать неподдерживаемые API, но это не проверяется последовательно. Приложения, о которых вы упомянули, либо используют неподдерживаемые функции/классы/методы, либо играют с иерархией представлений, которая сама не документирована, даже если это можно сделать со стандартными API-интерфейсами.
Вы можете делать то, что они делают, и рисковать этим. Просто имейте в виду риски. Ваше приложение может быть (а) отклонено из магазина, (b) принято, но позже загружено (это произошло при использовании неподдерживаемого API), (c) быть принятым и не загруженным, но в следующий раз у Apple появится новое обновление программного обеспечения для iPhone (поскольку неподдерживаемые API или иерархии представлений могут меняться без предупреждения). Или вам повезет, и ничего подобного не произойдет.