source

콘텐츠가 화면에 맞았을 때 UITableView 테이블 스크롤을 비활성화하는 방법

factcode 2023. 4. 14. 22:12
반응형

콘텐츠가 화면에 맞았을 때 UITableView 테이블 스크롤을 비활성화하는 방법

iphone 앱에 몇 개의 테이블(그룹화 스타일)이 있습니다(화면 일부에만 표시됨).Interface Builder그러나, 에서 분류되지 않는다UITableViewController80%는 작고 화면에 표시됩니다.테이블이 화면에 맞으면 스크롤을 비활성화하여 좀 더 깔끔하게 하고 싶습니다.그러나 테이블이 화면을 벗어나면(나중에 행을 추가할 때) 스크롤을 다시 활성화하고 싶습니다(그렇지 않으면 해당 콘텐츠를 볼 수 없기 때문에).

방법이 있을까요?난 그걸 이해할 수 없을 것 같아.할 줄 압니다.

tableView.scrollEnabled = NO;

어디에 있는지, 아니면 테이블 오브젝트 크기 같은 것을 계산해야 하는지 잘 모르겠습니다.


갱신하다: Here's the solution that finally worked for me:

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;

Swift의 경우:

tableView.alwaysBounceVertical = false

다음 기능을 사용하여 표시되는 셀 수를 확인할 수 있습니다.

- (NSArray *)visibleCells

이 메서드는 표시되는 셀을 포함하는 배열을 반환하므로 이 배열의 개체 수를 계산하고 테이블 내의 개체 수와 비교할 수 있습니다.같다면..다음 명령을 사용하여 스크롤을 비활성화할 수 있습니다.

tableView.scrollEnabled = NO;

@Ginny가 말했듯이..부분적으로 보이는 셀에 문제가 있을 수 있으므로 이 경우 이 솔루션이 더 효과적입니다.

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

autoLayout 이 솔루션을 사용하는 경우 다음 작업을 수행합니다.

tableView.alwaysBounceVertical = NO.

답변이 여러 개 있고 모든 콘텐츠가 한 번에 필요하기 때문에 다음 답변을 추가합니다.

AutoLayout을 사용하는 경우 이 설정만 하면 됩니다.

  • 코드:

tableView.alwaysBounceVertical = false

  • 또는 Interface Builder:

이 옵션을 찾아서untick"Bounce Vertically" 옵션을 선택합니다.

다음은 참고 자료입니다.

여기에 이미지 설명 입력

AutoLayout을 사용하지 않는 경우:

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

이거 먹어봐

[yourTableView setBounces:NO];

Scroll View(스크롤 보기) 영역에서 이러한 항목을 선택/선택 해제하여 바운스를 활성화/비활성화하거나 테이블 보기를 스크롤할 수 있습니다.

스크롤 보기 편집 영역

// Enable scrolling based on content height self.tableView.scrollEnabled = table.contentSize.height > table.frame.size.height;

스토리보드에서 편집할 수 있습니다(사용하는 경우).테이블 보기 아래에는 "Scrolling Enabled(스크롤링 활성화)" 확인란이 있습니다.선택을 취소하면 완료됩니다.

44.0f로 하다어레이에서 데이터 소스를 수중에 넣어야 합니다. 그냥 해 주세요.[array count]*44.0f되어 있는 는, 「」를 설정합니다.tableview.scrollEnabled = NO[YES] 예스특정 테이블 뷰의 데이터 소스를 산출한 곳에서 수행합니다.

이게 나한테 효과가 있었어.

tableView.isUserInteractionEnabled = false

언급URL : https://stackoverflow.com/questions/7410845/how-to-disable-scrolling-in-uitableview-table-when-the-content-fits-on-the-scree

반응형