Я не могу Скрыть iphone Camera shutter вводная анимация для моего приложения. Я использую UIImagePickerController для доступа к камере iPhone и использую мои собственные контроллеры наложения. Есть ли способ удалить начальный затвор (также известный как Iris) анимация, поскольку камера запускается.Спасибо
[Править]
Для тех, кто хочет знать способ изменить ирисовую анимацию камеры.
Ниже функции назван перед ирисовыми запусками анимации камеры.
- (void)navigationController:(UINavigationController *)navigationController willShowViewController:(UIViewController *)viewController animated:(BOOL)animated
{
// Here is were I make the camera preview fit the entire screen.
// This might violate the "don't change the view hierarchy"-rule.
// So I am not sure if it is valid for App Store commitment.
// However, the NSLogs are used to
// figure out which subview is the actual Camera Preview which turns out
// to be the PLPreviewView. (uncomment to se the printouts).
// Change it's size to fit the entire screen (and scale it accordingly
// to avoid distorted image
NSLog(@"WillShowViewController called...");
NSLog(@"VC:view:subviews\n %@\n\n", [[viewController view] subviews]);
NSLog(@"VC:view:PLCameraView:subviews\n %@\n\n", [[[[viewController view] subviews] objectAtIndex: 0] subviews]);
NSLog(@"VC:view:PLCameraView:PLPreviewView:subviews\n %@\n\n", [[[[[[viewController view] subviews] objectAtIndex: 0] subviews] objectAtIndex: 0] subviews]);
NSLog(@"VC:view:PLCameraView:PLCropOverLay:subviews\n %@\n\n", [[[[[[viewController view] subviews] objectAtIndex: 0] subviews] objectAtIndex: 1] subviews]);
NSLog(@"VC:view:PLCameraView:UIImageView:subviews\n %@\n\n", [[[[[[viewController view] subviews] objectAtIndex: 0] subviews] objectAtIndex: 2] subviews]);
}
В вышеупомянутой функции можно пройти каждый слой при помощи нормального синтаксиса NSMuatableArray как objectAtIndex
надежда это могло бы помочь Вам.
С уважением,
Ankur
Я немного повозился с этим, но отправил различные комбинации методов жизненного цикла представления средству выбора изображений. (viewWillAppear, viewDidAppear и т. д.) Но я не помню, какие из них сработали.
Используя этот ответ в качестве отправной точки, я наконец-то решил эту проблему:
ПРИМЕЧАНИЕ: Это явно не соответствует версии 3.3.1.
Прослушайте UINavigationControllerDidShowViewControllerNotification
на вашем UIImagePickerController
, и PLCameraViewIrisAnimationDidEndNotification
глобально.
Пройдитесь по иерархии представлений (начиная с главного UIWindow
) в поисках PLCameraView
. Сохраните индекс этого вида относительно главного UIWindow
, так как он понадобится вам позже.
Удалите PLCameraView
из его superView
. При желании вставьте свой собственный вид в глобальный индекс 0.
Когда анимация диафрагмы закончится, удалите свой вид и снова добавьте PLCameraView
в исходный индекс.
Извините за ответ, но так поздно. Я нашел решение для этого колодца, я поигрался с иерархией представлений cameraView и добавил свой собственный слой поверх всего. Анимация происходила там, и как только ставня открывалась, самый верхний слой был удален. Если кому-то понадобится дополнительная помощь с кодом, дайте мне знать, я предоставлю точные шаги и синтаксис.
-Анкур
Следующая функция вызывается перед запуском анимации диафрагмы камеры.
- (void)navigationController:(UINavigationController *)navigationController willShowViewController:(UIViewController *)viewController animated:(BOOL)animated
{
// Here is were I make the camera preview fit the entire screen.
// This might violate the "don't change the view hierarchy"-rule.
// So I am not sure if it is valid for App Store commitment.
// However, the NSLogs are used to
// figure out which subview is the actual Camera Preview which turns out
// to be the PLPreviewView. (uncomment to se the printouts).
// Change it's size to fit the entire screen (and scale it accordingly
// to avoid distorted image
NSLog(@"WillShowViewController called...");
NSLog(@"VC:view:subviews\n %@\n\n", [[viewController view] subviews]);
NSLog(@"VC:view:PLCameraView:subviews\n %@\n\n", [[[[viewController view] subviews] objectAtIndex: 0] subviews]);
NSLog(@"VC:view:PLCameraView:PLPreviewView:subviews\n %@\n\n", [[[[[[viewController view] subviews] objectAtIndex: 0] subviews] objectAtIndex: 0] subviews]);
NSLog(@"VC:view:PLCameraView:PLCropOverLay:subviews\n %@\n\n", [[[[[[viewController view] subviews] objectAtIndex: 0] subviews] objectAtIndex: 1] subviews]);
NSLog(@"VC:view:PLCameraView:UIImageView:subviews\n %@\n\n", [[[[[[viewController view] subviews] objectAtIndex: 0] subviews] objectAtIndex: 2] subviews]);
}
В приведенной выше функции вы можете пройти каждый уровень, используя обычный синтаксис NSMuatableArray, например objectAtIndex
, надеюсь, это может вам помочь.
С уважением,
Анкур