2010-01-11 62 views
7

我有一个小问题,我无法解决。我真的希望有人能帮助我。我想调整直播相机视图,并将其放置在中央,使用下面的下面的代码:在中心缩放活的iPhone相机视图,“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); 

翻译部分似乎对实时相机视图没有影响。 希望有人能启发我。

谢谢。

+0

我看到相同的行为。 – 2010-02-13 18:53:54

+0

我也是。不知道解决方案。 – Eonil 2010-06-05 18:35:17

+0

这似乎是在更新的iOS中修复的。我不知道他们什么时候补丁。 – sffc 2014-01-05 12:01:39

回答

1

我一直在反对同样的问题撞我的头。我已经确认缩放和旋转预览工作,但翻译似乎被忽略。我会推测,当设置变换时,CGAffineTransform的tx,ty部分将被忽略。这是与iPhone OS v3.1.2。我现在没有其他操作系统版本要测试。

-1

我得到了解决方案。 它必须在消息中设置:

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

您当然可以添加翻译,但它会被忽略,就像在原始问题中一样。 – macserv 2011-09-15 18:21:39

5

我是在同一条船上。我所做的是物理移动拾取器框架。

[picker.view setFrame:CGRectMake(xOffset,yOffset,picker.view.frame.size.width,picker.view.frame.size.height)];