Скройтесь/Покажите анимацию iPhone Camera Iris/Shutter

Я не могу Скрыть 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

10
задан Ankur 16 November 2011 в 00:35
поделиться

4 ответа

Я немного повозился с этим, но отправил различные комбинации методов жизненного цикла представления средству выбора изображений. (viewWillAppear, viewDidAppear и т. д.) Но я не помню, какие из них сработали.

0
ответ дан 4 December 2019 в 03:15
поделиться

Используя этот ответ в качестве отправной точки, я наконец-то решил эту проблему:

ПРИМЕЧАНИЕ: Это явно не соответствует версии 3.3.1.

  1. Прослушайте UINavigationControllerDidShowViewControllerNotification на вашем UIImagePickerController, и PLCameraViewIrisAnimationDidEndNotification глобально.

  2. Пройдитесь по иерархии представлений (начиная с главного UIWindow) в поисках PLCameraView. Сохраните индекс этого вида относительно главного UIWindow, так как он понадобится вам позже.

  3. Удалите PLCameraView из его superView. При желании вставьте свой собственный вид в глобальный индекс 0.

  4. Когда анимация диафрагмы закончится, удалите свой вид и снова добавьте PLCameraView в исходный индекс.

5
ответ дан 4 December 2019 в 03:15
поделиться

Извините за ответ, но так поздно. Я нашел решение для этого колодца, я поигрался с иерархией представлений cameraView и добавил свой собственный слой поверх всего. Анимация происходила там, и как только ставня открывалась, самый верхний слой был удален. Если кому-то понадобится дополнительная помощь с кодом, дайте мне знать, я предоставлю точные шаги и синтаксис.

-Анкур

0
ответ дан 4 December 2019 в 03:15
поделиться

Следующая функция вызывается перед запуском анимации диафрагмы камеры.

- (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

, надеюсь, это может вам помочь.

С уважением,

Анкур

0
ответ дан 4 December 2019 в 03:15
поделиться