2010-12-08 2 views
4

자동 크기 조정 마스크를 사용하여 내용을 이동하여 삭제 단추가 가리 키지 않도록 할 수있는 방법이 있습니까? 인터넷 검색은 내 하위 뷰에 UIViewAutoresizingFlexibleRightMargin의 자동 크기 지정 마스크를 설정해야한다고 말했습니다. 내게는 UIViewAutoresizingFlexibleWidth이 실제로 더 의미가있는 것처럼 보입니다. 나는 그것들을 시험해 보았지만 어느 것도 작동하지는 않았다.삭제 단추가 나타날 때 UITableViewCell 내용의 크기 조정

축소하려고하는 뷰는 셀의 contentView 하위 뷰 레이블입니다. delete 버튼이 나타나면 contentView 자체의 크기가 자동으로 조정되는지 확신 할 수 없습니다. 그러나 그렇지 않은 것처럼 보입니다. 그렇지 않으면 필자의 자동 크기 조정 마스크가 효과가 있었음에 틀림 없다.

삭제 단추가 있으면 어떤보기의 크기도 조정되지 않습니다. 어쨌든 수동으로이 작업을 수행 할 수 있습니까?

답변

4

UIViewAutoresizingFlexibleLeftMargin을 사용해야합니다.

여기 왜 있습니다. 내용을 왼쪽으로 이동 시키려면 기본적으로 삭제 단추가 내용을 왼쪽으로 밀어내는 것처럼 보이게하십시오. flexibleLeftMargin은 기본적으로 UILabel이 contentView의 오른쪽에 고정되어있을 것임을 의미합니다. 원하는 이유는 삭제 버튼이 실제로 contentView의 너비를 줄이기 때문입니다.

UILabel의 자동 크기 조절 마스크는 셀이 아닌 contentView 내부에서 어떻게 작동 하는지를 나타냅니다.

시도해보십시오. 효과가 있습니다.

+0

UIViewAutoresizingFlexibleLeftMargin이 작동하지 않지만 UIViewAutoresizingFlexibleWidth는 나를 위해 작동합니다. – derpoliuk

3

이 질문은 정말 오래되었지만 해결책을 찾은 이후로 나는 어쨌든 대답해야한다고 생각합니다.

확인 버튼이있는 셀의 ContentView 만 크기가 조정됩니다. 셀에 내용을 직접 추가하는 대신 cell.contentView에 뷰 (레이블, 이미지 뷰 등)를 추가하지 않으면 contentView 크기를 조절할 때 크기가 조정되지 않습니다. 내 경우에는 셀에 직접 추가하고있었습니다.

그래서, 대신 같은 일을 : 당신이해야

UILabel *nameLabel = [[UILabel alloc] initWithFrame:CGRectMake(5, 5, width-10, 20)]; 
[nameLabel setFont:[UIFont boldSystemFontOfSize:16]]; 
[nameLabel setHighlightedTextColor:[UIColor whiteColor]]; 
[nameLabel setAutoresizingMask:UIViewAutoresizingFlexibleWidth]; 
[nameLabel setTag:101]; 
[cell addSubview:nameLabel]; 
[nameLabel release]; 

:

UILabel *nameLabel = [[UILabel alloc] initWithFrame:CGRectMake(5, 5, width-10, 20)]; 
[nameLabel setFont:[UIFont boldSystemFontOfSize:16]]; 
[nameLabel setHighlightedTextColor:[UIColor whiteColor]]; 
[nameLabel setAutoresizingMask:UIViewAutoresizingFlexibleWidth]; 
[nameLabel setTag:101]; 
[[cell contentView] addSubview:nameLabel]; // <<--- note the change in this line! 
[nameLabel release]; 

희망이이 문제에 우연히 다른 사람을 도움이됩니다.

1

iOS 7을 사용하고 있습니다. 동일한 문제가 있습니다. UITableViewCell에 자동 레이아웃을 사용할 수 있도록 별도의 xib를 사용하고 있으므로 레이블에 하나 이상의 제약 조건이 추가되어 오른쪽에 고정 된 간격이 생깁니다.