[iphone] 내용이 화면에 맞을 때 UITableView 테이블에서 스크롤을 비활성화하는 방법

내 iPhone 앱에 몇 (그룹화 된 스타일) 테이블이 있습니다 (화면의 일부에만 있고 Interface Builder하위 클래스로 분류되지 는 않지만 추가됨 UITableViewController). 시간의 80 %가 작고 화면에 맞습니다. 테이블이 화면에 맞으면 스크롤을 비활성화하여 좀 더 깨끗하게 만들고 싶습니다. 그러나 테이블이 화면에서 사라지면 (나중에 행을 추가 할 때) 스크롤을 다시 활성화하고 싶습니다 (그렇지 않으면 해당 내용을 볼 수 없기 때문에).

이 방법이 있습니까? 나는 그것을 알아낼 수없는 것 같습니다. 나는 알고있다 :

tableView.scrollEnabled = NO;

그러나 테이블 객체 크기 또는 이것을 계산하기 위해 무언가를 계산 해야하는지 또는 어디에 있는지 잘 모르겠습니다.


업데이트 : 마침내 나를 위해 일한 솔루션은 다음과 같습니다.

if (table.contentSize.height < table.frame.size.height) {
   table.scrollEnabled = NO;
 }
else {
   table.scrollEnabled = YES;
 }

전화 한 후이 코드를 실행합니다. reloadData테이블 하면 올바른 크기를 계산하고 작동하는 것처럼 보입니다.

table.frame.size.heightInterface Builder화면에 표시된 객체의 실제 크기 (에서 볼 수 있음 )이고 table.contentSize.height높이는 머리글, 바닥 글 및 함께 추가 된 모든 셀의 높이입니다.



답변

당신이 설정하고 싶어

tableView.alwaysBounceVertical = NO;


답변

이 기능을 사용하여 보이는 셀 수를 확인할 수 있습니다.

- (NSArray *)visibleCells

이 메소드는 표시되는 셀이있는 배열을 리턴하므로이 배열의 오브젝트 수를 세고 테이블의 오브젝트 수와 비교할 수 있습니다. 동일한 경우. 스크롤을 사용 불가능하게 할 수 있습니다.

tableView.scrollEnabled = NO;

@Ginny가 언급했듯이 부분적으로 보이는 셀에 문제가있을 수 있으므로이 경우이 솔루션이 더 잘 작동합니다.

tableView.scrollEnabled = (tableView.contentSize.height <= CGRectGetHeight(tableView.frame));

autoLayout을 사용하는 경우이 솔루션이 다음 작업을 수행하십시오.

tableView.alwaysBounceVertical = NO.


답변

스위프트에서 :

tableView.alwaysBounceVertical = false


답변

따라서 여러 답변이 있으며 한 번에 모든 내용이 필요 하므로이 답변을 추가합니다.

자동 레이아웃을 사용하는 경우이를 설정하면 다음과 같이 작동합니다.

  • 코드에서 :

tableView.alwaysBounceVertical = false

  • 또는 인터페이스 빌더에서 :

이 옵션과 untickBounce Vertically“옵션을 찾으십시오 .

참조는 다음과 같습니다.

여기에 이미지 설명을 입력하십시오

자동 레이아웃을 사용하지 않는 경우 :

 override func viewDidLayoutSubviews() {
    // Enable scrolling based on content height
    tableView.isScrollEnabled = tableView.contentSize.height > tableView.frame.size.height
 }


답변

이 시도

[yourTableView setBounces:NO];


답변

스크롤보기 영역에서 표보기를 선택 / 선택 해제하여 바운스 활성화 / 비활성화 또는 스크롤을 설정할 수 있습니다.

스크롤 뷰 편집 영역


답변

스토리 보드에서이를 편집 할 수 있습니다 (사용중인 경우). 테이블보기 아래에 “Scrolling Enabled”라는 확인란이 있습니다. 선택을 취소하면 완료됩니다.