【问题标题】:UIView Transform property to skew a circle to give it a 3D lookUIView Transform 属性倾斜一个圆,使其具有 3D 外观
【发布时间】:2012-10-18 00:03:52
【问题描述】:

我正在使用 MKMapView 并添加了 MKCircleView。它继承自 UIView,所以我可以使用 transform 属性。

它看起来很平坦,没有变换,因为它是 3D,所以在图钉旁边看起来很奇怪:

我想让它看起来类似于:

我尝试过设置CATransform3DRotate 的示例,但所涉及的数学不是我的技能,所以没有什么比这更接近了。

我该怎么做?

【问题讨论】:

  • 这行得通吗? [view.layer setTransform:CATransform3DMakeRotation(M_PI_4, 1, 0, 0)];
  • 似乎变化很大。
  • "并且在图钉旁边看起来很奇怪,因为它是 3D 的" - 是的,但是在变形它之后,它在地图上看起来会很奇怪,因为它是 2D 的。
  • 这可能是真的,但我还是想弄清楚怎么做! :)

标签: ios uiview cgaffinetransform catransform3drotate


【解决方案1】:

我会使用 2d 缩放来伪造它

CGContextScaleCTM

每个 UIView 都可以做到这一点:

UIView *v = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 5, 5)];
CGAffineTransform scale = CGAffineTransformMakeScale(1.0f, 0.6f);
[v setTransform:scale];

按因子(1.0、0.6)缩放,你就完成了!

如果这没有帮助,您应该多做一点,创建自己的自定义地图叠加层,如 this tutorial 中所述

祝你好运!

【讨论】:

  • 我可以在没有子类的情况下这样做吗?
  • 试试答案中的教程,它可能会有所帮助。
  • 添加一个 MKOverlayPathView 而不是 MKCircleView,并使用 CGPathCreateWithEllipseInRect 设置其路径属性。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-19
  • 1970-01-01
相关资源
最近更新 更多