2014-09-29 1 views
1

카메라가 보는 내용을 표시하는 뷰에 컨트롤을 오버레이하는 UIViewController가 있습니다. 내가 허용하고 싶은 몇 가지 시나리오가 있습니다. 아이 패드를 들어 UIViewController에서보다 정교한 UIView 회전

  1. , 내가 상관없이 장치의 회전, 오른쪽 엄지 손가락에 의해, 장치의 가장 오른쪽 가장자리컨트롤을 유지하지 싶습니다. 컨트롤의 내용은의 내용이 항상 위쪽 (땅에서 떨어진 위치)으로 회전해야합니다. 카메라보기가 전혀 회전하지 않기를 바랄뿐입니다. 그 위치는 & 크기가 그대로 유지되어야하며 그 내용도 회전해서는 안됩니다. 아이폰의를 들어
  2. , 나는 홈 버튼은 실제로 어디든지, 홈 버튼에 의해, 장치의 화면의 하단에있는 컨트롤을 유지하려는. 컨트롤은 콘텐츠가으로 회전해야 위쪽이 항상 위로 향하게됩니다. 다시 말하지만, 카메라 뷰의 프레임이나 내용이 뷰 로테이션 애니메이션에 전혀 포함되지 않도록해야합니다.

저는 자동 레이아웃을 사용하고 있습니다.

스토리 보드에이 중 일부 또는 전부를 설명 할 방법이 있는지 궁금합니다. 특히, 일부보기 위치가 자동 회전 (예 : iPad의 컨트롤)해야한다고 설명 할 수는 있지만 다른보기는 카메라보기가 아닌 것을 설명하는 것이 좋습니다.

question from 2011은 당시로서는 가능하지 않았 음을 나타내지 만 그 이후로 상황이 변경되었을 수 있습니까? 직접적으로 지원되지 않는 경우 접근 방식을 제안하고이를 달성하기 위해 자동 실행에 연결하는 합리적인 장소가 있습니까?

+0

부모보기가 수동 레이아웃이되기를 원하기 때문에 (장치와 함께 회전하지 않으므로) 하위보기 (컨트롤)가 자동 레이아웃 되길 원하십니까? 예, autolayout을 강요하는 것을 어렵게 들립니다. 하지만, 내 머리 꼭대기에서 ... 나는 캔버스가 움직이지 않는 그림 응용 프로그램을 가지고 있습니다. 장치가 있지만 컨트롤은 항상 맨 아래쪽으로 이동합니다. 방향. 장치 방향이 바뀌면 캔버스를 회전 방향에서 반대 방향으로 회전 시켜서 그 작업을 수행했습니다. 그 라인에있는 뭔가가 ...? –

+0

안녕하세요 @AnnaDickinson 이상적으로 모든 화면 크기/장치 위에 하나의 스토리 보드를 가질 수 있도록 자동 레이아웃을 사용하는 모든보기를 원합니다. 자동 회전 애니메이션과 반대 회전 애니메이션을 일치시킬 수 있었습니까? 애니메이션 중에 두 애니메이션이 취소 되었습니까? 그게 알아두면 유용 할 것 같아! – Benjohn

답변

0

좋아,이 답변은 아니지만 유망한 것으로 보이는 몇 가지 사항을 시도했습니다.

먼저 크기 지정자를 사용하여 세로와 가로에 대한 별도의 제약 조건 집합을 만들 수 있습니다. 가로는 w 일반, 항상 h는 모두; 세로보기입니다 w 임의, h 일반 (내 생각에 - 이것들을 다시 확인하십시오) 이것은 스토리 보드보기의 하단 중앙에있는 팝업 컨트롤을 통해 액세스 할 수 있습니다. 세로 및 가로 방향에 대한 다른 구속 조건을 설치하면 컨트롤의 컨테이너보기의 너비와 높이를 일정하게 유지하여 w.r.t가 일정한 위치에있는 것처럼 보일 수 있습니다. 장치 방향; 다른 말로하면, 컨테이너는 실제로 반대 방향으로 회전하지 않습니다 - 실제로 크기가 비례하므로 은 반 시계 방향으로 회전 한 것처럼처럼 보입니다.

나는이 작업에 가깝게 다가갔습니다. 그것은 스토리 보드보기에서 올바른 일을하고있는 것처럼 보이지만, 실제로 실행하면 충돌하는 제약 조건에 대한 디버그 메시지가 표시됩니다. 이 문제를 해결하는 방법을 모르겠지만 제약 우선 순위를 가지고 노는 건 어떨까요? 때때로 도움이됩니다.

(부분적으로) 내가 (부분적으로) 시도한 장치 방향 (UIDevice 클래스의)을 기반으로 올바른 위치로 카운터를 회전하는 사용자 지정 컨테이너보기 클래스를 만드는 것이 었습니다. layoutSubviews를 재정 의하여이를 구현합니다. 각 방향에 대해 올바른 위치에 배치하는 변형을 정의하고 뷰의 변형 속성을 설정합니다.

또 다른 가능한 솔루션은보기 컨트롤러에서 updateConstraints를 재정의하고 컨테이너를 각 방향의 올바른 위치에 배치/확장하기 위해 제약 조건을 추가/제거하는 것입니다.

이 모든 경우, 컨테이너를 올바른 위치에 "강제로"놓고 서브 뷰 (실제 컨트롤)는 그대로 두는 것이 좋습니다. 제약 조건이 컨테이너 뷰의 특정 방향과 독립적 인 경우 컨트롤은 올바른 작업을 수행해야합니다.

어쨌든 이러한 아이디어는 실제 해결책으로 인도한다면 게시 할 수 있습니까? 나는 이것에 대한 필요성을 예상한다.

+0

안녕하세요, 안나,이 기회를 주셔서 감사합니다! 회신하기 위해 나이를 먹는 것을 유감스럽게 생각합니다. 나는 몇몇 뷰를 회전시키기 위해 변형을 설정하는 지루한 옵션을 사용했지만 컨트롤러는 세로 방향으로 남겨 두었습니다. 당신의 제안에서 당신은 같은 크기를 제공하기 위해 풍경과 초상화에 대한 다른 제약을 언급합니다. 이는 의미가 있지만 컨트롤러 (컨트롤러 내용보기 포함)의보기가 실제로 회전하는 것을 실제로 방지 할 방법은 없습니다. 그들은 같은 크기로 끝날 것이지만 그 끝 지점으로 회전 할 것입니다, 안돼요? – Benjohn