2011-10-01 4 views
0

나는 화면에 두 가지 기본 영역이있는 아이 패드 응용 프로그램을 구축하고있다 :여러 UIView를 사용하여 화면의 영역을 어떻게 표시해야합니까?

  • 왼쪽에 선은 오른쪽
  • 자유 형식 캔버스에 드래그 할 수 있습니다 "일을"포함 도크와 캔버스 뷰 모두의 ViewController의 관점에 파단으로 추가 된 가정에서 오른쪽

에, 내 질문에 도크에서 내 손가락으로 "일을"드래그의 역학 주위 캔버스 ... 누가 "물건"을 대표하는 견해를 소유해야합니까? 독을 나타내는 uiview이어야합니까? (그리고 선창에서 캔버스로 이동할 때 독에서 제거하고 캔버스에 추가 할 수 있습니까?) 또는 viewcontroller의 루트 뷰에 속해야합니까? 아니면 다른 패턴?

저는 여기에 관련된 디자인 패턴에 대한 사람들의 생각에 관심이 있습니다.

고마워요. BTW, 나는 이것을 위해 cocos2d와 같은 것을 사용하려고 생각해 왔지만, 현재로서는 표준 UIKit을 사용하고 싶습니다.

답변

0

Objective-C에서는 UIViewController을 사용하여보기를 제어합니다. 프로그램의 논리는 이러한 컨트롤러에 있습니다. 아이디어는 뷰와 모델 (데이터)을 분리하고 컨트롤러가 상호 작용을 관리하도록하는 것입니다. 이를 MVC (Model-View-Controller) 디자인 패턴이라고합니다.

귀하의 경우 컨트롤러는 메인 view 및 하위 뷰를 제어합니다. 따라서 정확히 하나의 객체 (또는 UIView)를 하나의 하위 뷰에서 다른 객체로 드래그하는 로직을 구현할 곳입니다. 말하자면 드래그 된 객체는이 컨트롤러에 속합니다.

캔버스에있는 "데이터 모델"을 추적하는 다른 클래스가있을 수도 있습니다. 컨트롤러는 변경 내용을 읽고 쓰는 것이 필요합니다. 어쩌면보기에 필요한 맞춤형 그림이있을 수 있습니다. 뷰는이 동작 자체를 구현합니다. 이런 식으로 다시 사용할 수있는 코드를 작성하는 데 도움이되는 캡슐화 캡슐화 원칙을 따르십시오.

+0

의견에 감사드립니다. MVC 디자인 패턴에 익숙합니다 ... 아마도 소유권이 무엇을 의미하는지 명확히해야합니다. 여기에는 두 가지 유형의 소유권이 있습니다 : 1. 객체 수명주기 및 관리, 2. 뷰/하위 뷰 관계. 나는 두 번째 것을 언급하고있다. "things"를 나타내는 UIView가 addSubview :)를 사용하여 DockView에 추가되면 touchesMoved : withEvent : function의 다른보기로 해당 UIView를 드래그하는 것이 매우 어려워집니다. 뷰 계층 규칙이이를 클립하기 때문에 DockView의 가장자리가 가장자리에 가까워 질 때까지 –

+0

그건 아주 간단합니다. 뷰 컨트롤러에는'뷰 '가 있고, 드래그 가능하거나 그렇지 않은 다른 모든 뷰는이 뷰의 서브 뷰입니다. 각보기의 '레이어'를 경계로 자르지 않도록 설정할 수 있습니다. 보기가 부분적으로 화면 외부에있는 경우 클립 대 경계 설정은 관련이 없습니다. – Mundi

+0

그냥 티켓처럼 보입니다! 고마워요 ... 당신이 그걸 레이어로 할 수 있는지 몰랐습니다. –

관련 문제