Масштабированное живое представление iPhone Camera в центре, “CGAffineTransformTranslate”, не работающий

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

    picker.cameraViewTransform = CGAffineTransformScale(picker.cameraViewTransform, 0.5, 0.56206);
    picker.cameraViewTransform = CGAffineTransformTranslate(picker.cameraViewTransform, 80, 120);

Но все, что я получил, было масштабированным 1/2 измеренное представление в левом верхнем углу экрана. Кажется, как будто "CGAffineTransformTranslate" не делает ничего вообще. Перевод не работал, даже когда я использовал:

     picker.cameraViewTransform = CGAffineTransformMake(1, 0, 0, 1, 80, 120);

Часть перевода, кажется, не имеет никакого эффекта на живое представление камеры. Надежда кто-то может просветить меня.

Спасибо.

7
задан Gavin 11 January 2010 в 14:10
поделиться

2 ответа

Я бился головой о ту же проблему. Я убедился, что масштабирование и поворот предварительного просмотра работают, но переводы, похоже, игнорируются. Я бы предположил, что части tx, ty CGAffineTransform игнорируются при установке трансформации. Это происходит в iPhone OS v3.1.2. Сейчас у меня нет других версий ОС для тестирования.

1
ответ дан 7 December 2019 в 12:20
поделиться

Я нашел решение. Его необходимо указать в сообщении:

- (void)navigationController:(UINavigationController *)navigationController didShowViewController:(UIViewController *)viewController animated:(BOOL)animated

Пример кода:

#pragma mark -
#pragma mark UINavigationControllerDelegate
- (void)navigationController:(UINavigationController *)navigationController didShowViewController:(UIViewController *)viewController animated:(BOOL)animated
{   
    CGFloat width = [[self view] bounds].size.width;
    CGFloat height = width/4*3;
    CGSize sizeOfCamera = CGSizeMake(width, height);
    CGAffineTransform t = CGAffineTransformMakeScale(0.5, 0.5);
    [picker setCameraViewTransform:t];

    // Now the image is automatically aligned to center.
    // Translation matrix also can be applied, but didn't use because it's already aligned to center.
}
-1
ответ дан 7 December 2019 в 12:20
поделиться
Другие вопросы по тегам:

Похожие вопросы: