Масштабируемое изображение с камеры iPhone в центре, "CGAffineTransformTranslate" не работает - PullRequest
7 голосов
/ 11 января 2010

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

    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);

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

Спасибо.

Ответы [ 3 ]

5 голосов
/ 27 февраля 2012

Я был в одной лодке. То, что я сделал, это физически передвинул каркас подборщика.

[picker.view setFrame:CGRectMake(xOffset,yOffset,picker.view.frame.size.width,picker.view.frame.size.height)];
1 голос
/ 14 апреля 2010

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

0 голосов
/ 05 июня 2010

Я получил решение.Он должен быть установлен в сообщении:

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