2012-07-06 5 views
0

사용자가 하위 뷰를 추가 할 수있는 UIView가 있습니다. 이제 첫 번째 발견 된 열린 위치에서 사용자에 대한 하위 뷰를 자동으로 배치하는 응용 프로그램이 필요합니다.UIView 내에서 가장 가까운 열린 공간 찾기

배치 될 하위 뷰의 프레임이 다른 하위 뷰와 교차하지 않으면 위치가 열린 것으로 간주됩니다.

이 열린 영역을 찾기위한 계산은 즉석 일 필요는 없습니다. 사용자가 처음 장면에 들어갈 때 실행됩니다.이 시점에서 장면을 놓은 사용자처럼 그 위치가 저장됩니다.

컨테이너 UIView는 항상 사용자가 추가 할 수있는 제한된 수의 하위보기가있는 하위보기를 배치 할 수있는 열린 공간을 가질만큼 충분히 커야합니다.

하위보기를 배치 할 위치를 결정하는 가장 간단한 방법은 무엇입니까?

답변

0

이 질문에 대한 답변에서 이러한 종류의 문제를 해결하는 데 일반적으로 사용되는 알고리즘에 대한 설명을 게시했습니다 : Finding Largest Rectangle in 2D Array. 이 솔루션을 문제에 적용하는 것은 상당히 쉽습니다. 그 질문에서 채워진 공간은 그리드 위에 있었고, 이것은 스캔 라인을 조금 더 쉽게 진행할 수있는 양을 결정하게 만들었습니다. 더 조심해야합니다. 또한 다른 질문은 최대 면적을 가진 빈 사각형을 찾고 있었고 처음 맞는 것을 발견하자마자 알고리즘을 일찍 끝낼 수있었습니다.

물론 모든 하위보기의 크기가 동일한 경우 솔루션은 거의 동일합니다.

희망이 도움이됩니다.

0

inbuilt 메소드가 존재하는지 여부는 확실하지 않습니다. 그러나 반복적 인 루프를 실행하고 컨테이너보기 내부의 모든보기 범위를 가져올 수 있습니다. 판독 값에 따라 열린 공간을 계산해야합니다.

관련 문제