Я намагаюся здійснити обертання на поданні таблиці, щоб нахилити таблицю (щоб надати ефект 3D-сканування тексту, подібного до сканування відкриття зоряних воєн).
Подивившись навколо, я знайшов це питання target-с 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 після створення мого масиву Strings (який заповнює tableView)
Наразі у Контролері є лише три інші методи:
didReceiveMemoryWarning (автоматично додається при створенні проекту)
tableView: numberOfRowsInSelection (використовується для налаштування подання таблиці) tableView: cellForRowAtIndexPath (використовується для налаштування подання таблиці та налаштування тексту клітин у масиві)
Моє розуміння полягає в тому, що у перегляду таблиці є аCALayer, і що CATransform3D маніпулює цим, щоб надати представлення виду в 3d-просторі. Якщо моє розуміння правильне, то я не розумію, чому список відображається нормально на екрані? Я ціную цифри, які поки не дають потрібного ефекту, але вони повинні принаймні вплинути на появу табличного перегляду на екрані.
Також я імпортував QuartzCore і т. Д. І додавав їх у пов'язані рамки
Рішення полягає у використанні коду, позначеного як OLD відповідь у методі - (UITableViewCell *) tableView: cellForRowAtIndexPath: метод після перевірки комірки на нульову.
Відповіді:
0 для відповіді № 1Оскільки запропонований нижче підхід не спрацював, я б спробував ще одне - застосувати перетворення до UITableView
Насправді, UITableView
це UIScrollView
, тож це просто контейнер для підзаписів, які складають реальний вміст подання таблиці. Я б спробував щось подібне:
for (UIView* subview in tableView.subviews) {
subview.layer.transform = ...;
}
Я ніколи не перевіряв підгляди подання таблиціієрархія, тож я не можу сказати, чи буде це спрацьовувати чи вам слід скоріше застосувати перетворення лише до одного з підпрезентацій, але я сподіваюся, що це може привести вас у правильному напрямку.
СТАРИЙ ВІДПОВІДЬ:
Ви можете спробувати встановити шар перегляду таблиці sublayerTransform
замість `перетворення ':
Зазвичай ви використовуєте цю властивість для додаванняперспектива та інші ефекти перегляду для вбудованих шарів. Ви додаєте перспективу, встановивши перетворення підшару на потрібну матрицю проекції. Типовим значенням цього властивості є перетворення ідентичності.
(джерело)
Я пропоную це виходячи з гіпотези, що a UITableView
має досить складну структуру з точки зору підзаписів, тому трансформація просто шару подання може не мати ніякого ефекту. Я не пробував цього, хоча не можу гарантувати, що він спрацює.