【问题标题】:Using CATransform3D使用 CATransform3D
【发布时间】:2013-02-03 17:58:12
【问题描述】:

我正在尝试在 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 答案的代码。

【问题讨论】:

    标签: objective-c uitableview catransform3d catransform3drotate


    【解决方案1】:

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

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

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

    旧答案:

    您可以尝试设置表格视图的层 sublayerTransform 而不是 `transform':

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

    (source).

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

    【讨论】:

    • 谢谢,我只是在 tableView 上尝试过,但再次没有效果 :(。但是当我将它应用到 textView 时,它工作得很好(仅当将其更改为 sublayTransform 时)还有其他建议吗?我会当我找到答案时继续寻找和更新(因为我确信有办法做到这一点)
    • 如果您尝试将转换应用到表格视图的子视图会怎样?最后,UITableView 只是一个包含其他视图(可能只有一个)的滚动视图。
    • 终于找到了如何做到这一点,通过使用你的代码,但在 tableView: cellForRowAtIndexPath 方法它有效,对我来说很有意义,但至少它有效!非常感谢您的帮助
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-03-20
    • 2010-10-08
    • 2012-04-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多