在中心缩放实时 iPhone 相机视图,“CGAffineTransformTranslate”不起作用
Posted
技术标签:
【中文标题】在中心缩放实时 iPhone 相机视图,“CGAffineTransformTranslate”不起作用【英文标题】:Scaled live iPhone Camera view in center, "CGAffineTransformTranslate" not working 【发布时间】:2011-01-03 18:42:48 【问题描述】:我有一个我无法解决的小问题。我真的希望有人可以帮助我。我想调整实时摄像机视图的大小并将其放置在中心,使用以下代码:
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);
翻译部分似乎对实时摄像机视图没有影响。 希望有人能不吝赐教。
谢谢。
【问题讨论】:
我看到了同样的行为。 我也是。不知道解决办法。 这似乎已在较新的 ios 中得到修复。我不确定他们什么时候修补的。 【参考方案1】:我一直在努力解决同样的问题。我已经确认缩放和旋转预览有效,但翻译似乎被忽略了。我推测在设置转换时会忽略 CGAffineTransform 的 tx、ty 部分。这适用于 iPhone OS v3.1.2。我目前没有其他操作系统版本可供测试。
【讨论】:
【参考方案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.
【讨论】:
您当然可以尝试添加翻译,但它会被忽略,就像在原始问题中一样。【参考方案3】:我在同一条船上。我所做的是物理移动选择器框架。
[picker.view setFrame:CGRectMake(xOffset,yOffset,picker.view.frame.size.width,picker.view.frame.size.height)];
【讨论】:
以上是关于在中心缩放实时 iPhone 相机视图,“CGAffineTransformTranslate”不起作用的主要内容,如果未能解决你的问题,请参考以下文章
将本机 iphone 相机缩放滑块和 youtube 播放器控制器添加到我的应用程序