首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用CATransform3D

使用CATransform3D
EN

Stack Overflow用户
提问于 2013-02-03 17:58:12
回答 1查看 2K关注 0票数 1

我试着在桌面视图上做一个旋转,以倾斜桌子(给出3d文本爬行的效果,类似于星战的开始爬行)。

环顾四周后,我发现了目标- CALayer UIView真实旋转这个问题

被接受的答案似乎做了我想做的事情,但是当我将代码应用到我的TableView时,它什么也不做,表也会像往常一样出现。

这是我要复制的代码:

代码语言:javascript
复制
float distance = 50;

CATransform3D basicTrans = CATransform3DIdentity;
basicTrans.m34 = 1.0 / -distance;
_tableView.layer.transform = CATransform3DRotate(basicTrans, M_PI_4, 1.0f, 0.0f, 0.0f);

在创建字符串数组(填充viewDidLoad )之后,我将它放在我的tableView方法中。

我目前在主计长中只有另外三种方法:

didReceiveMemoryWarning (在创建项目时自动添加)

tableView: numberOfRowsInSelection (用于设置表视图) tableView: cellForRowAtIndexPath (用于设置表视图和设置数组中的单元格文本)

我的理解是,tableview有一个CALayer,而CATransform3D操纵它在3d空间中给出视图的表示。如果我的理解是正确的,那么我就不明白为什么列表会在屏幕上正常显示。我很感激这些数字,我还没有给出我想要的效果,但它们至少应该影响到屏幕上tableView的外观。

此外,我还导入了QuartzCore等,并将其添加到链接框架中。

解决方案是在检查单元格是否为空之后,在- (UITableViewCell *)tableView: cellForRowAtIndexPath: method中使用标记为旧答案的代码。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-02-03 18:33:34

由于下面建议的方法没有起作用,我要尝试的另一件事是将转换应用到UITableView的子视图中。实际上,UITableView是一个UIScrollView,所以它只是一个子视图的容器,构成了表视图的真正内容。我会尝试这样的方法:

代码语言:javascript
复制
for (UIView* subview in tableView.subviews) {
  subview.layer.transform = ...;
}

我从未检查过表视图子视图层次结构,因此我不能说这是否有效,或者您应该只对其中一个子视图应用转换,但我希望这能引导您朝着正确的方向前进。

旧的答案:

您可以尝试设置表视图的层sublayerTransform,而不是“`transform”:

您通常使用此属性向嵌入层添加透视图和其他查看效果。通过将子层转换设置为所需的投影矩阵来添加透视图。此属性的默认值是标识转换。

(来源)。

我认为这是基于一个假设,即一个UITableView在子视图方面有一个相当复杂的结构,所以仅仅转换视图的层可能没有任何效果。不过,我还没试过,所以我不能保证它会起作用。

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

https://stackoverflow.com/questions/14675440

复制
相关文章

相似问题

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