1

我正在尝试在 tableview 上进行旋转以倾斜桌子(以产生类似于星球大战开幕式爬行的 3d 文本爬行效果)。

环顾四周后发现这个问题objective-с CALayer UIView real rotation

并且接受的答案似乎做了我想要的,但是当我将代码应用到我的 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);

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

我目前在 Controller 中只有三个其他方法:

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

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

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

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


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

4

1 回答 1

0

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

for (UIView* subview in tableView.subviews) {
  subview.layer.transform = ...;
}

我从未检查过表视图子视图层次结构,所以我不能说这是否可行,或者您应该将转换应用于仅一个子视图,但我希望这可以引导您朝着正确的方向前进。

旧答案:

您可以尝试设置表格视图的图层sublayerTransform而不是“转换”:

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

来源)。

我的建议是基于 aUITableView在子视图方面具有相当复杂的结构的假设,因此仅转换视图的层可能没有效果。不过,我还没有尝试过,所以我不能保证它会起作用。

于 2013-02-03T18:33:34.187 回答