我试着在桌面视图上做一个旋转,以倾斜桌子(给出3d文本爬行的效果,类似于星战的开始爬行)。
环顾四周后,我发现了目标- CALayer UIView真实旋转这个问题
被接受的答案似乎做了我想做的事情,但是当我将代码应用到我的TableView时,它什么也不做,表也会像往常一样出现。
这是我要复制的代码:
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中使用标记为旧答案的代码。
发布于 2013-02-03 18:33:34
由于下面建议的方法没有起作用,我要尝试的另一件事是将转换应用到UITableView的子视图中。实际上,UITableView是一个UIScrollView,所以它只是一个子视图的容器,构成了表视图的真正内容。我会尝试这样的方法:
for (UIView* subview in tableView.subviews) {
subview.layer.transform = ...;
}我从未检查过表视图子视图层次结构,因此我不能说这是否有效,或者您应该只对其中一个子视图应用转换,但我希望这能引导您朝着正确的方向前进。
旧的答案:
您可以尝试设置表视图的层sublayerTransform,而不是“`transform”:
您通常使用此属性向嵌入层添加透视图和其他查看效果。通过将子层转换设置为所需的投影矩阵来添加透视图。此属性的默认值是标识转换。
(来源)。
我认为这是基于一个假设,即一个UITableView在子视图方面有一个相当复杂的结构,所以仅仅转换视图的层可能没有任何效果。不过,我还没试过,所以我不能保证它会起作用。
https://stackoverflow.com/questions/14675440
复制相似问题