【问题标题】:Swift iOS -Apply additional changes to transform when using CATransform3D .m34 property to change perspective in SwiftSwift iOS - 使用 CATransform3D .m34 属性更改 Swift 中的透视图时应用额外的更改
【发布时间】:2018-11-10 12:41:28
【问题描述】:

我正在读一本关于动画的书iOS Core Animation: Advanced Techniques。这本书是用Objective C编写的。我对Objective C并不流利。我理解.m34属性的作用,但是当我将本书的代码应用于Swift时,视角并没有改变。问题是我似乎无法添加到像 explained here 这样的现有转换中。

我的代码:

var tranform = CATransform3DIdentiy
transfrom.m34 = -1 / 500
transform = CATransform3DMakerotation(CGFloat(Double.pi/4), 0, 1, 0) // this is just creating a new transform instead of adding to the existing one
viewIwantTransformed.layer.transfrom = transform

图书代码:

@implementation ViewController 
- (void) viewDidLoad 

 { [super viewDidLoad]; 

   // create a new transform CATransform3D 
   transform = CATransform3DIdentity;

   // apply perspective 
   transform.m34 = - 1.0 / 500.0; 

  // rotate by 45 degrees along the Y axis
  transform = CATransform3DRotate( transform, M_PI_4, 0, 1, 0);

  // apply to layer 
  self.viewIwantTransformed.layer.transform = transform; 

} @end

结果

【问题讨论】:

  • 试试这一行 transform = CATransform3DRotate(transform, M_PI_4, 0, 1, 0)
  • @Jigar Darji 嘿,谢谢!如果你把它作为官方答案,我会接受它
  • 接受我的回答
  • 它说我要等 4 分钟
  • ok np 之后尝试

标签: ios swift catransform3d


【解决方案1】:

试试这个

transform = CATransform3DRotate(transform, M_PI_4, 0, 1, 0) 

改为

transform = CATransform3DMakerotation(CGFloat(Double.pi/4, 0, 1, 0)

【讨论】:

  • Swift 4 说使用 Double.pi 而不是 M_PI。无论如何,答案都是正确的,谢谢。这是警告建议的内容,将 M_PI_4 更改为 Double.pi/4。所以代码是 transform = CATransform3DRotate(transform, CGFloat(Double.pi/4), 0, 1, 0)
  • 嗯有一些语法警告
猜你喜欢
  • 1970-01-01
  • 2016-10-13
  • 2021-02-08
  • 1970-01-01
  • 2020-02-19
  • 1970-01-01
  • 2016-03-29
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多