【发布时间】: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