2015-01-24 2 views
1

스토리 보드에 이상한 문제가 있습니다. UITableViewDelegate 메서드 대신 행 높이의 자동 치수를 사용하려면 응용 프로그램 코드를 리팩토링하고 있습니다. 내 셀은 매우 간단합니다. UIView라는 하나의 하위 요소 만 있습니다. 나는 제약 조건 추가 :동적 높이를 사용하는 동안 UITableViewCell에 대한 스토리 보드 상충되는 제약

enter image description here

을 나는 제약의 충돌이 : enter image description here

하지만 시뮬레이터 모두에 꽤 잘 작동하고, 내가 콘솔에서 경고 어떤 제약이 없습니다.

뭐가 잘못 됐는지 말해 줄 수 있어요? 어쩌면 나는 셀 동적 크기 조정에 대한 아이디어를 얻지 못 하겠지만 제 생각에는 모호성없이 셀 높이를 결정하는 제약 조건을 설정해야합니다. (그리고 세 가지 제약 조건이 그것을 수행하고 있습니다).

+0

UITableViewCell의 높이가 63이 아닌 경우 세 가지 제약 조건이 충돌합니다. 당신이 언급 한 "셀 동적 크기"그래서 하위 뷰 높이가 변수가 있어야합니다 같아요. 이 경우 높이 (50) 제약 조건을 시도하고 제거 할 수 있습니다. –

+0

명시 적으로 UITableViewCell 높이를 설정하고 싶지 않습니다. 나는 autolayout UITableViewCell의 하위 뷰의 높이에서이 값을 결정하고 싶습니다. – MichalMoskala

+0

알겠습니다. 스토리 보드에 표시되는 충돌은 '표보기 셀'- 높이의 설정 일 수 있습니다. 위에서 말했듯이 그것은 63이어야합니다 ("구분 기호"가 "없음"으로 설정된 경우) 그렇지 않으면 올바른 값은 64입니다. –

답변

3

view.bottom에 가장 가까운 이웃은 superview.Bottom.Margin (또는 셀의 내용보기) 인 셀의보기에 대해 12입니다. view.bottom에 제약 조건 8을 요청하고 있습니다. 또한 이러한 제약 조건을 만족시키기 위해 인터페이스 빌더는보기의 높이 (예 : 파란색)를 변경해야합니다. 보기의 높이를 50으로 제한하는 제한이 있기 때문에 물론이 작업을 수행 할 수 없습니다.

숫자가 합쳐 지도록 수정하여 테이블보기 셀의 높이를 기본값 대신 80으로 변경하십시오 84. 그러나 테이블 셀의 높이를 동적으로 변경하려는 경우 더 많은 제약 조건이 발생할 수 있습니다.

또는 "수직 공간 - (8) - 속성보기 -보기"의 상수를 상수 12로 변경하십시오. 그러면 "수직 공간 - (12) - 개념보기 -보기"가됩니다. 다시 표 셀의 높이를 동적으로 변경하면 문제가 발생합니다.

보기를 표 셀의 중앙에 배치 하시겠습니까? 케이스가 그렇다면 두 개의 수직 구속 조건을 제거하고 중심 y 정렬 구속 조건을 추가하십시오. 그런 다음 셀의 높이를 변경하면 뷰는 맨 위 및 맨 아래 구속 조건을 계산하여 세로로 중심을 맞 춥니 다.

#import "testLayoutControllerTableViewController.h" 

@interface testLayoutControllerTableViewController() 
@property (weak, nonatomic) IBOutlet UITableView *thetable; 
@end 

@implementation testLayoutControllerTableViewController 

- (void)viewDidLoad { 
    [super viewDidLoad]; 
} 

#pragma mark - Table view data source 

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView { 
    return 1; 
} 

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { 
    return 10; 
} 

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { 
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"cellid"]; 
    return cell; 
} 

@end 

내가 인터페이스 빌더 설치의 이미지를 게시 할 것입니다 그리고 그것은 시뮬레이터에서 어떻게 보이는지하지만 난 충분히 명성을 가지고 있지 않습니다

다음은 내가 만든 예제 프로젝트입니다.

+0

어디에서 값 12를 얻었습니까? – MichalMoskala

+0

contentView의 세로 중심으로 y 제약 조건을 추가했지만이 경우 시뮬레이터에서 실행할 때 행의 높이가 파란색보기보다 작습니다. 뷰에 맨 아래 구속 조건을 추가하려고하면 – MichalMoskala

+0

이 표시됩니다. 제안 된 값은 가장 가까운 이웃에게 공백입니다. 아래쪽에 대한 제안 12 – antonkronaj

관련 문제