首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >旋转UIView以提供透视图

旋转UIView以提供透视图
EN

Stack Overflow用户
提问于 2012-10-16 17:11:29
回答 1查看 1.2K关注 0票数 3

我想改变我的Viewcontroller中的UIView的视角。我认为我必须转换这个UIView层,但我不知道如何转换。

我尝试了下面的代码,但它不起作用

代码语言:javascript
复制
UIView *myView = [[self subviews] objectAtIndex:0];
CALayer *layer = myView.layer;
CATransform3D rotationAndPerspectiveTransform = CATransform3DIdentity;
rotationAndPerspectiveTransform.m34 = 1.0 / -500;
rotationAndPerspectiveTransform = CATransform3DRotate(rotationAndPerspectiveTransform, 45.0f * M_PI / 180.0f, 0.0f, 1.0f, 0.0f);
layer.transform = rotationAndPerspectiveTransform;

我还尝试了以下代码:

代码语言:javascript
复制
-(void)drawRect:(CGRect)rect {
    CGContextRef ctx = UIGraphicsGetCurrentContext();
    CGAffineTransform transform = CGAffineTransformIdentity;
    transform.b = -0.1;
    transform.a = 0.9;
    CGContextConcatCTM(ctx,transform);
    // do drawing on the context
}

还有这个:

代码语言:javascript
复制
CALayer *layerA = [[self.view.layer sublayers] objectAtIndex:0];


    layerA.transform = CATransform3DConcat(layerA.transform, CATransform3DMakeRotation(DEGREES_TO_RADIANS(45),1.0,0.0,0.0)

他们两个都不管用。如何改变UIView的视角?

换句话说,我将举一个例子。想象一下这个样例代码,一个旋转馅饼RotationPie sample。我想改变它的视角,在x或z asis中。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-10-16 18:25:44

您的第一个解决方案适用于我这一端。它看起来像这样:

你能展示你的整个类代码吗,如果它在你那端不一样的话?

编辑

好了,我已经重新配置了提供的代码示例,以展示它是如何实现的:

(在这里下载更新的代码示例:http://www.speedyshare.com/dz469/download/Wheel-demo.zip)

它看起来像这样:

我只是将转换应用于基子视图。作为该视图的子视图的所有视图也将被转换。如果你想让相应的子视图有不同的转换-这会更难,因为,然后你必须考虑父视图转换,来计算新的转换-这可能会变得非常困难。

但我已经做了一些简单的多视图级转换。例如,为了达到效果,视图进行缩放、移动和旋转:

  • 我对parentView
  • I've应用了移动变换,对parentViews first子视图应用了旋转变换;
  • 我对parentViews first子视图应用了缩放变换。

编辑

好了,我已经重新配置了所提供的代码示例,以显示它是如何可能的,以便将轮子留在变换位置:

(在这里下载更新的代码示例:http://www.speedyshare.com/5d8Xq/download/Wheel-demo2.zip )

问题是-在这种情况下,我将变换添加到轮子本身-看起来,轮子也是基于变换的。因此,当你触摸它时,它会替换现有的变换,并应用它自己的(当用户滑动滚轮时旋转箭头)。

因此,当我们与它交互时,为了让它处于透视状态,我们需要另一个视图层。

我创建了一个新的视图(让我们称它为父视图),并将轮子作为子视图添加到此视图中。

然后,我将转换应用于父视图,而不是轮子。而且它起作用了!

我希望它对您有所帮助,您现在可以更多地了解转换:)

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12911255

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档