2010-12-13 3 views
2

일부 계층 적 데이터를 레이아웃하기위한 알고리즘을 만들어야하지만 전에 이런 종류의 작업을 수행하지 않았으며 몇 가지 광범위한 팁이 필요합니다.다이어그램의 사용자 정의보기 레이아웃을 만드는 데 유용한 정보

기본적으로 내가 (동적 데이터)이 그림을 다시해야합니다

diagram http://dl.dropbox.com/u/15126868/diagram.png
bigger

나는 그것의 대부분에 문제가 없지만 두 가지로 도움이 필요 :

  1. 어떻게 레이아웃 알고리즘 작성에 접근합니까?
  2. 나는

어떤 제안 환영 (I 상호 작용이 필요합니까) 모든 디스크 또는 사용 석영에 대한 UIView의 서브 클래스를 사용해야합니다. 나는 너무 자세하게 할 필요가 없다.


조금 더 자세히 : 나는 현재 내가 UIView의 서브 클래스 및 layoutSubviews를 사용한다 생각하고 있어요

. 문제는 내가 그들을 배치하기 전에 모든 노드의 크기 (적어도 대략적으로)를 알아야한다는 것입니다. 그런 다음 위치를 지정하는 데 회전이 필요하므로 하위 위치 지정을 다시 조정해야 할 수도 있습니다. 회전 후에도 라벨을 추가 할 수 없습니다.

다른 고려 사항은 다음과 같아야합니다. 제시 영역이 사각형이 아니라 사각형입니다. 나는 그 페이지를 흘릴 수 없다. 디스크 크기의 변화를 애니메이션화해야 할 것입니다.

모든 포인터가 좋을 것입니다.

답변

5

이런 종류의 일은 매우 어렵습니다.

아마도 흥미로운 사실은 초기 실제 제약은 타이포그래피의 크기입니다. 주어진 예에서

가 : 그들은 다른 SCPT를 선택한 수를 관찰하십시오 ** 다소 큰 (아마 10 % -15 % 이상) 또는 다소 작고 그 것이다 아직도을했다. 그들은 SCPT에 대한 심미적 인 결정을 내렸다.

공백은 디자인에 중요합니다.. 그들의 특별한 그래픽 디자이너는 당신이 보는 공백의 특별한 느낌을 좋아했습니다. 그러나 더 작은 SCTP로 "잘못"된 것은 결코 아닙니다. 더구나, 그들은 더 큰 SCPT를 사용할 수 있었다는 것을 관찰하십시오 ... IF ... 그들은 타이포그래피에 작은 포인트 크기를 사용했습니다. 어떤 경우에도 당신은 단순히 아이 패드 (또는 Fone4)에 작은 그렇게 많은 종류 있음을 표시 할 수 없습니다 것을

참고.

그래서 곧바로 유형이 어떻게 나타날지, 팝업, 오디오 등을 결정해야합니다. 심지어 흰색 유형 ("디스크에"유형)도 문제를 줄 것입니다.

알고리즘을 진행하기 전에 먼저 iPad에서 포토샵으로 많은 테스트를 수행해야합니다. 순수한 가치가있는 것만으로 ...

저는 개인적으로 이런 종류의 일을합니다. 일반적인 계획 : 나는 그것이 만족스런 결과를 찾을 때까지 스스로를 재 시도하는 뾰족한 알고리즘을 시도하려고합니다. 이전 것은 이런 종류의 일을 기준으로

IMHO : 이 문제가 그것으로 한 번에 수행하기가 너무 어렵 일부, 특히 스마트 엉덩이 발견. 하루를 절약 할 수있는 똑똑한 엉뚱한 경험적 방법이 없기 때문에 다음과 같이하십시오.

1) 표시 할 총 수를 계산합니다. (예제 이미지에서 총계가 약 2.5 인 것처럼 보입니다.)

2) 시작으로 SCPT 값을 추측합니다. 예를 들어 "18"은 위의 화면 크기에서 실제 이미지를 기반으로 질문에 게시 된 내용을 나타냅니다.

3) 죽은 센터에 큰 태양 (태양)을 넣고 가운데에있는 행성 (행성)에 대해 - 매우 쉬운 휴리스틱을 선택하십시오. 가장 왼쪽에서 가장 작은 것부터 가장 작은 것까지의 반 시계 방향 srtaing 문제의 그 부분으로 영리 해 지려고 노력하지 마십시오. 정말로 순수한 거대한 연구 프로젝트가 될 수 있습니다. 작은 것들 (위성)과 똑같이하십시오. 행성과 위성 사이의 스틱

4) - 는 !! "항상 0.5 cm"와 같은 사소한 솔루션을 (채택)하고는합니다. 인공 지능으로 당신의 손실을 줄여야합니다 .. 도처에! :) 위성을 행성에 고정시키고 그들에 대해 잊어라.

5) 이제 어려운 부분 .. 그들을 발견의 일종을 실행 균등 지금까지 무엇을 균형 . 색상을 질량으로 처리하고 색상이 없으면 질량을 없애고 "태양"을 평형이 될 때까지으로 옮깁니다. (명확한 것은, 3 장에서 언급 한 "행성"레이아웃을 따랐을 때 아래쪽으로 될 가능성이있는 예가 될 수 있습니다.) 또한 모든 행성/달 시스템을 움직여 균형을 맞추려고했을 수도 있습니다.

6) 다음 반복. 그 결과를보고 당신이 그것을 좋아하는지 결정하십시오! (2)로 돌아가서 새 값을 선택하십시오. (예 : "16!")

(7) 두 가지 가능한 결과가 있습니다. 개발 중에는 항상 작동하는 SCPT를위한 하나의 마법 값이있을 수 있습니다. 아마도 "14.3"또는 "18.2"또는 무엇이든. 그런 가치를 발견하면 아무에게도 말하지 마십시오. 그것을 당신의 자신의 비밀 정보로 유지하십시오 !!!! 그것은 고객과 함께 가치있는 모든 것을 우유입니다. 반대로 더 어려울 때마다 매번 다른 가치가 필요할 수도 있습니다. 이 경우 : AI가 값을 통해 반복하여 값을 까지 찾으면을 좋아합니다. (예를 들어, 모든 라벨이 맞는지 아닌지를 결정하여 "화면에있는 모든 것을 만지고 있습니까?"등과 같은 뚜렷한 것들)

어쨌든 FWIW (아마도 아무것도 아님) SCPT에 대한 첫 번째 추측에 근거한 반복 접근법.

덧붙여 말하자면, 이런 종류의 정보 표시에 대한 고전적이고 화려한 책을 사서 사고 싶을 수도 있습니다 !!! 모두에게 사본이 있어야합니다. 이미지 레이아웃의 메커니즘에 대해서 에드워드 R. 터프
ISBN 0961392142

의해 Quantatative 정보

터프 의 시각 디스플레이. 쿼츠 또는 다른 저수준 도면을 사용해야하며 UIView 등은 잊어 버리십시오. 그리기 레이어에서 로직을 완전히 분리해야합니다. UIView, OpenGLES 등으로 변경하려는 경우에도 몇 줄의 코드 만 변경하면됩니다.

어떻게 든 도움이 되길 바랍니다.

노트 ... 조

후속 프로세스 당
** SCPT .. cm2 ...
"별도의 로직을 유지하기 위해 당신은 매니저 형 패턴을 사용해야합니까?"
솔직히 : 만약 내가하고 있었다면, 나는이 부분을 얻는 "연구"를 위해서 완전히 새로운 앱을 시작했을 것입니다. 바로이 도전, 올바른 것입니다. 그 애플 리케이션 (솔직히!) 나는 깔끔한 어떤 방식 으로든 무엇이든을하기 위하여 모든 노력을 할 것입니다! : -/전세계 어디에서나! :) 나에게 불행히도 한 번에 한 가지만 생각할 수 있기 때문에 그 단계에서 알고리즘 그 자체에 대해서만 생각할 것입니다.

일단 내가 더 큰 프로젝트에서 그것을 구현하게되면, 문제가 그 자체로 문제가된다고 생각합니다 ... 정말로, FWIW, 그것이 나 였다면, 단순히 클래스로 만들 것입니다 (AmazingClass라고합시다) 그보다 더 복잡한 것은 없습니다. 개인적으로 나는 데이터를 어딘가에 별도로 (DB 또는 배열에 상관없이) 설정하고, AmazingClass가 데이터를 가져 오도록 조장 할 것입니다. (제 생각에는 AmazingClass 과정의 어느 시점에서 데이터가 필요할 지, AmazingClass가 원하는 시점에 언제 어떻게 처리하는지 알려주지 마십시오.)

당신이 말하고있는 멋진 굉장한 매니저 패턴에 익숙하다면 - 왜 그렇지 않습니까? 간단히 말해 나는 최대한 많이 그것을 분리 할 것이다. 나는 그 일을하는 가장 좋은 방법을 말하기에 충분하지 않습니다. 그러나 그것을 어딘가에서 완전히 분리하십시오. 미안해, 그걸 도울 수 없어.

+0

조, 무슨 대단한 대답, 고마워. 정말 유용한 정보입니다. 나는 SCPT의 노선을 따라 뭔가를 생각하고 있었고, 나는 정말로 필요하다고 생각했던 반복적 인 접근 방식을 생각해 낸 것을 기쁘게 생각한다. 나는 내가 단순한 존재라고 생각하기 시작했다. 한 번의 스윕으로 레이아웃. – pieSquared

+0

논리를 분리하여 유지하려면 관리자 유형 패턴을 사용 하시겠습니까? 그것은 의심 스럽지만 당신은 좋은 방향으로 나를 설득했습니다. 시간을내어 도와 주셔서 감사합니다. – pieSquared

+0

동의. 연구의 이름으로 초기 혼란이 가장 잘 보입니다. 나는 CA & CG와 대단히 놀아본 적이 없기 때문에 내가 생각하기에 시작하고 텍스트가 없으면 막연하게 작업 할 수 있는지 알아 본다. 다시 고마워. Joe - 기분이 좋아 졌어! – pieSquared

관련 문제