2013-12-13 3 views
1

7 개의 정보를 표시하는 UITableViewCell 하위 클래스가 있습니다. 맨 위에 하나의 레이블이 엔티티 이름을 표시 한 다음 6 개의 레이블에 엔티티 데이터가 표시됩니다. 내가 좋아하는 셀이보고 싶지autolayout을 사용하여 여러 UI 레이블을 연속으로 래핑하는 방법

| Entity Name      | 
    | [data1]  [data2]  [data3] | 
    | [data4]  [data5]  [data6] | 

그리고 풍경 : 세로, 내가 좋아하는 셀이보고 싶을 때 내가 자동 레이아웃 독립적 중 하나를 수행 할 수

| Entity Name           | 
    | [data1] [data2] [data3] [data4] [data5] [data6] | 

하지만, 무엇은있다 두 가지를 모두 수행하는 가장 좋은 방법은 무엇입니까? 단일 제약 집합을 사용하여이를 수행하는 방법이 있습니까? 아니면 장치를 회전 할 때마다 필요한 NSLayoutConstraints를 모두 제거/추가해야합니까? 아니면 다른 해결책이 있습니까?

답변

1

내가 취할 접근법은 셀 내부에서 UICollectionView를 사용하는 것입니다.

그런 식으로 셀의 레이아웃을 관리하는 것은 이런 종류의 일을하는 데 익숙합니다. 앞으로 추가 할 레이블을 몇 개 추가할지에 관계없이 중요합니다.

각 셀이 자체 레이아웃을 관리 할 수 ​​있도록 셀을 UICollectionViewDelegate/Datasource로 만듭니다.

+1

UICollectionViewFlowLayout을 사용하여이 작업을 수행 할 수있는 방법이 있습니까? 아니면 자체 레이아웃 클래스를 구현해야합니까? 아직 컬렉션보기에 익숙하지 않습니다. 그것은 scrollDirection을 Vertical로 설정했지만 콜렉션 뷰의 높이에 제약 조건을 유지하고 기대하는 행 수에 따라 더 크게/작게 만듭니다 (그렇게 스크롤하지 않도록)? –

+1

실제로 이것은 완벽하게 작동했습니다. UICollectionView의 높이 (내용에 맞게 크기)를 추적하고 재설정하기 위해 제약 조건을 유지해야했지만 예상보다 훨씬 쉬웠습니다. 감사! –

+0

그것은 당신을 위해 일했기 때문에 다행입니다. 다른 의견에 답하기 위해 플로우 레이아웃을 사용하십시오. 하지만 아마 이미 그렇게했을거야 .-) – Fogmeister

0

두 가지 방법이 있습니다.

  1. UICollectionView를 사용하면 흐름 레이아웃이 기본 레이아웃입니다.

  2. 방향 변경시 코드의 제약 조건을 업데이트하면 UI 요소가 화면 너머에 있는지 확인하고이를 새 줄로 이동하고 그에 따라 나중에 항목을 업데이트 할 수 있습니다.

첫 번째 것이 바람직하다.