Obróciłem widok o 50 stopni wokół osi Y za pomocą animacji rdzenia. Chcę, aby krawędź widoku dotykała krawędzi ekranu. Jak mogę to zrobić?Jak określić odległość obiektu obróconego w 3D od krawędzi ekranu?
Znam długość widoku i ilość stopni, o które widok został obrócony (50 stopni), więc na początku pomyślałem, że mogę określić odległość między widokiem a krawędzią za pomocą trygonometrii. Jednak perspektywa kamery ma wpływ na przez właściwość m34
struktury . Jak mogę określić odległość, jakiej potrzebuję, aby przesunąć widok, aby dopasować się do krawędzi ekranu?
CATransform3D rotation = CATransform3DIdentity;
rotation.m34 = -1.0/500.0;
rotation = CATransform3DRotate(rotation, 50.0 * M_PI/180, 0.0, 1.0, 0.0);
view.layer.transform = rotation;
view.layer.zPosition = 200;
Domyślna wartość ramki przekształconego obiektu pozostaje taka sama. Ramka jest najmniejszym nieprzetworzonym prostokątem, który może zawierać cały powiązany widok, więc dlaczego to jeszcze nie działa? – CodaFi
Czy naprawdę potrzebujesz widoku do przetłumaczenia wzdłuż z-axsis? –
@CodaFi, Nie sądzę, że będzie działała ramka do krawędzi superview, od Apple: jeśli ta właściwość nie jest przekształceniem tożsamości, wartość właściwości ramki jest niezdefiniowana i dlatego powinna zostać zignorowana. – marchinram