Простейшим способом, вероятно, было бы заключить представление, которое вы хотите перевернуть, в более высокое, смещенное, прозрачное представление контейнера, а затем перевернуть этот контейнер.Другими словами:
|-----|
| |
| B |
| |
0 | |
||---||
|| A ||
||---||
|-----|
A - представление, которое вы хотите перевернуть;B - контейнер;0 это верхняя часть экрана.Примените свой переход к B;переворачивая B по центру, вы переворачиваете A вдоль его вершины.
Вы также можете сделать что-то более сложное и просто реализовать переворот самостоятельно, используя Core Animation, но это немного проще.
Отредактировано:
Если вы хотите использовать подход Core Animation, в основном вам нужно применить CATransform3D к слою, чтобы повернуть его вокруг горизонтальной оси, то есть theLayer.transform = CATransform3DMakeRotation(M_PI, 1, 0, 0)
.Это перевернет его через середину, однако, это то, что вам не нужно, поэтому вам также нужно изменить значение anchorPoint
слоя со значения по умолчанию (0.5, 0.5)
на (0.5, 0)
, чтобы его «источник» былв центре его верхнего края.Вы также можете применить эффект перспективы к обратному преобразованию, используя элемент m34
CATransform3D, как описано здесь .