ios - Swift iOS - 使用 CATransform3D .m34 属性更改 Swift 中的透视图时应用额外的更改
问题描述
我正在读一本关于动画iOS Core Animation: Advanced Techniques的书。这本书是用Objective C编写的。我对Objective C并不流利。我了解.m34属性的作用,但是当我将本书的代码应用于Swift时,视角并没有改变。问题是我似乎无法像这里解释的那样添加到现有的转换中。
我的代码:
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)
而是由
transform = CATransform3DMakerotation(CGFloat(Double.pi/4, 0, 1, 0)
推荐阅读
- mysql - 如何查询列值聚合与某个日期范围内的条件匹配的用户列表?
- python - SyntaxError : 无效的语法绝地
- python - 使用 selenium 甚至无法抓取基本信息
- javascript - 如何使用 sequelize ORM 在 SQLite 中设置线程模式?
- go - 使用 Go 从 Api 获取相反的数据
- sql - oracle sql中的JSON_TABLE未捕获嵌套的json数据
- firebase - 从 Firestore 下载 8GB 数据
- firebase - 用户无法在 firebase Flutter 应用程序中退出
- c++ - Symmetric transfer does not prevent stack-overflow for C++20 coroutines
- c# - how to modify value of property has unique key in ef6