【问题标题】:Specific transforming rectangle with help CATransform3D or CGAffineTransform借助 CATransform3D 或 CGAffineTransform 的特定变换矩形
【发布时间】:2013-06-17 06:05:37
【问题描述】:

有什么办法可以像图片那样变形吗?

http://i.imgur.com/vOMqZ1e.png

编辑:

现在,我使用下一个代码进行转换:

    - (CATransform3D)carousel:(iCarousel *)carousel itemTransformForOffset:(CGFloat)offset baseTransform:(CATransform3D)transform {
   transform.m34 = - 0.0004;
   CGFloat clampedOffset = fmaxf(-1.0f, fminf(1.0f, offset));
   CGFloat x = (clampedOffset * 0.5f * _tilt + offset * _spacing) * kWidthView;
   CGFloat z = fabsf(clampedOffset) * - kWidthView * 0.5f;
   transform = CATransform3DTranslate(transform, x, 0.0f, z);
   return CATransform3DRotate(transform, -clampedOffset * M_PI_2 * _tilt, 0.0f, 1.0f, 0.0f);
}

【问题讨论】:

    标签: iphone ios cgaffinetransform catransform3d


    【解决方案1】:

    将透视变换与围绕 y(垂直)轴的旋转相结合 并将其应用于视图层应该会产生这种效果,例如:

    CATransform3D transform = CATransform3DIdentity;
    transform.m34 = -1.0/200.0;
    transform = CATransform3DRotate(transform, 45.0f * M_PI / 180.0f, 0.0f, 1.0f, 0.0f);
    layer.transform = transform;
    

    【讨论】:

    • 我在这里问之前试过这个,但没有得到想要的结果。事情在这种情况下,在这种情况下变换视图镜像的顶部和底部。也许如果改变视角中心(transform.m34)结果将是预期的。有什么办法吗?
    • @Dickordia:你为什么没有在你的问题中说明你已经尝试过什么? - 等我有空的时候再测试一下。
    • @Dickordia:我已经尝试过了,它似乎有效,我无法识别镜像的顶部/视图部分。 - 也许您可以显示一个屏幕截图来说明您的问题。
    • 现在我得到了这样的结果:imgur.com/Y5zichW 但我想得到这个结果:i.imgur.com/mHSetAZ
    • @Dickordia:也许您应该将代码添加到问题中。
    猜你喜欢
    • 2010-10-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-04-14
    • 1970-01-01
    • 2012-03-17
    • 1970-01-01
    相关资源
    最近更新 更多