[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.height
는 Interface 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
- 또는 인터페이스 빌더에서 :
이 옵션과 untick
” Bounce Vertically
“옵션을 찾으십시오 .
참조는 다음과 같습니다.
자동 레이아웃을 사용하지 않는 경우 :
override func viewDidLayoutSubviews() {
// Enable scrolling based on content height
tableView.isScrollEnabled = tableView.contentSize.height > tableView.frame.size.height
}
답변
이 시도
[yourTableView setBounces:NO];
답변
스크롤보기 영역에서 표보기를 선택 / 선택 해제하여 바운스 활성화 / 비활성화 또는 스크롤을 설정할 수 있습니다.
답변
스토리 보드에서이를 편집 할 수 있습니다 (사용중인 경우). 테이블보기 아래에 “Scrolling Enabled”라는 확인란이 있습니다. 선택을 취소하면 완료됩니다.