У меня есть немного проблемы, которую я не мог решить. Я действительно надеюсь, что кто-то может помочь мне с этим. Я хотел изменить размер живого представления камеры и поместить его в центр, с помощью следующего кода ниже:
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);
Часть перевода, кажется, не имеет никакого эффекта на живое представление камеры. Надежда кто-то может просветить меня.
Спасибо.
Я бился головой о ту же проблему. Я убедился, что масштабирование и поворот предварительного просмотра работают, но переводы, похоже, игнорируются. Я бы предположил, что части tx, ty CGAffineTransform игнорируются при установке трансформации. Это происходит в iPhone OS v3.1.2. Сейчас у меня нет других версий ОС для тестирования.
Я нашел решение. Его необходимо указать в сообщении:
- (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.
}