我有一个图像和一组四个点(描述四边形Q).我想转换这个图像,使其适合四边形Q.Photoshop称这种转换为"扭曲".但是根据这个四边形的来源(图像在空间中移动的视角),它实际上是尺度,旋转和透视矩阵的组合.
我想知道使用CATransform3D 4x4矩阵是否可行.你有任何关于如何做到这一点的提示吗?我试图取四个点并构建16个方程式(A'= A xu),但它不起作用:我不确定我应该使用什么作为z,z',w和w'系数......
下图显示了我想要做的事情:

以下是一些要点的例子:
276.523, 236.438, 517.656, 208.945, 275.984, 331.285, 502.23, 292.344
261.441, 235.059, 515.09, 211.5, 263.555, 327.066, 500.734, 295
229.031, 161.277, 427.125, 192.562, 229.16, 226, 416.48, 256
Run Code Online (Sandbox Code Playgroud) Twitter for iPad实现了一种奇特的"缩小纸张折叠"效果.这是一个简短的视频片段. http://www.youtube.com/watch?v=B0TuPsNJ-XY
CATransform3D没有OpenGL 可以做到这一点吗?一个工作的例子将是感恩的.
更新:我对此动画效果的方法或实现感兴趣.这就是我在这个问题上提供赏金的原因 - srikar
我在苹果的一些文档中看到,CALayer转换属性背后的矩阵有m14,m21,m22等字段.我还记得我在一两个月前看过一张解释这些字段的表格.我很难找到它.有谁知道来源?
我正在使用以下代码来旋转图像,但是已经"旋转"出页面的图像的一半(沿着y轴)消失了.怎么修?heading是弧度.
CALayer *layer = myUIImageView.layer;
CATransform3D rotationAndPerspectiveTransform = CATransform3DIdentity;
rotationAndPerspectiveTransform.m34 = 1.0 / 500;
rotationAndPerspectiveTransform = CATransform3DRotate(rotationAndPerspectiveTransform, heading, 0.0f, 1.0f, 0.0f);
layer.transform = rotationAndPerspectiveTransform;
Run Code Online (Sandbox Code Playgroud) 请仔细阅读图片.

所以这是我从一些在线资源获得的代码,它确实改变了我的对象.除此之外,我什么都不懂.我是CATransform3D的新手,想知道它是如何工作的.
CATransform3D transform = CATransform3DIdentity;
transform.m34 = 1.0 / -500;
transform = CATransform3DRotate(transform, 45.0f * M_PI / 180.0f, 0, 1, 0.0f);
_bgView.layer.transform = transform;
Run Code Online (Sandbox Code Playgroud)
我想知道这段代码是如何运行的?为什么我们在m34中设置了一些值?我发现它的某种矩阵甚至让我更加困惑.另外,CATransform3DRotate中的参数是什么 意思?
我想了解但没有进一步.
我想深入了解CATransform3D.请帮助处理任何文章,文档或解释自己.
非常感谢.
我正在尝试使用CA制作简单的部分翻转动画,但我遇到了透视问题.我尝试过:
[UIView animateWithDuration:1.0 animations:^{
self.someView.layer.anchorPoint = CGPointMake(0.5, 0);
self.someView.layer.transform = CATransform3DMakeRotation(M_PI*0.6,1.0,0.0,0.0);
} completion:^(BOOL finished){
// code to be executed when flip is completed
}];
Run Code Online (Sandbox Code Playgroud)
如何获得这个美好的视角?

我正在寻找如何实现ViewController的想法,它将管理视图,就像iOS 7 Safari管理标签一样.我必须呈现多个视图,其中几乎是全屏设备的大小.如果有人有其他想法我会很感激
我正在尝试在我的iPhone应用程序中创建图像的"页面卷曲"动画.我是UIViewAnimationTransitionCurlUp,它是未记录的核心动画兄弟,但是我需要动画的图像是一个透明的PNG,带有"不均匀"(一些像素像素)轮廓.当使用上述预制转换时,一旦动画开始,那些alpha像素就被涂成黑色,这看起来非常难看.
因此,我寻求创建自己的核心动画.我试图研究这个主题,但一直无法找到所涉及技术的良好概述.实现当然必须比单个属性更改更复杂,我觉得即使CATransform3D也会限制用于此目的,因为图像需要在其不同部分应用不同的3D转换 - 随时间变化.那怎么会谈到这个话题呢?我非常感谢任何想法或想法!
最好的,Eli
我的问题
我想用CollectionViewFlowLayout实现一个看起来像Safari Pageviewer的CollectionView(见截图)
由于Apple引用了像"z-index"这样的东西,"转换"很容易实现.经过几天的教程和研究后,我无法做到.
我遵循了一些正常的CollectionViewFlowLayout并使其成为CollectionView FlowLayout的子类.现在我尝试了
-(NSArray*)layoutAttributesForElementsInRect:(CGRect)rect
Run Code Online (Sandbox Code Playgroud)
该
-(void)modifyLayoutAttributes:(UICollectionViewLayoutAttributes *)layoutAttributes
Run Code Online (Sandbox Code Playgroud)
和
-(UICollectionViewLayoutAttributes *)layoutAttributesForItemAtIndexPath:(NSIndexPath *)indexPath
Run Code Online (Sandbox Code Playgroud)
在我尝试给细胞一个3D变换.
但是从未调用layoutAttributesForItemAtIndex(找到了一些解释,但我并没有真正理解它)
并且尝试其他方法也没有用(在细胞上没有可见的3D转换.)
以下是我的尝试,以便您可以看到我尝试过的内容:
//从未调用过这个
-(UICollectionViewLayoutAttributes *)layoutAttributesForItemAtIndexPath:(NSIndexPath *)indexPath
{
UICollectionViewLayoutAttributes *attributes =
[super layoutAttributesForItemAtIndexPath:indexPath];
[attributes setTransform3D:CATransform3DMakeTranslation(10.0, 20.0, 10.0)];
attributes.transform3D = CATransform3DMakeScale(1.0, 2.0, 1.0);
return attributes;
}
Run Code Online (Sandbox Code Playgroud)
//这个被调用,但转换没有按预期工作.
-(NSArray*)layoutAttributesForElementsInRect:(CGRect)rect
{
NSArray *allAttributesInRect = [super
layoutAttributesForElementsInRect:rect];
for (UICollectionViewLayoutAttributes *cellAttributes in allAttributesInRect)
{
cellAttributes.size=CGSizeMake(300, 300);
cellAttributes.transform3D = CATransform3DMakeScale(1.0, 2.0, 1.0);
cellAttributes.transform3D = CATransform3DMakeTranslation(1, 200, 100);
[self modifyLayoutAttributes:cellAttributes];
}
return allAttributesInRect;
}
Run Code Online (Sandbox Code Playgroud)
//这也行不通
-(void)modifyLayoutAttributes:(UICollectionViewLayoutAttributes *)layoutAttributes
{
if ([layoutAttributes.indexPath isEqual:_currentCellPath])
{ …Run Code Online (Sandbox Code Playgroud) objective-c mobile-safari coverflow ios uicollectionviewcell
我想在iPhone中的视图(特别是UILabel)上应用3D旋转.最简单的方法是什么?
一个代码示例将非常感激.