[ios] UITableView에서 셀 앞의 빈 공간 제거

현재 UITableView뷰 컨트롤러 상단이 아닌 다른 위치에을 넣으려고합니다 . 이 말을하면 탐색 모음을 설명하기 위해 상단에 헤더를 추가하려고하지만 컨트롤러 상단에 없기 때문에 필요하지 않습니다.

UITableView셀을 원하는 위치 의 왼쪽 상단 모서리에 넣으면 셀이 배치되지 않습니다.

이제 테이블보기를 위로 이동하여 셀이 올바른 위치에 있으면 다른 문제가 발생합니다. 스크롤 할 때 셀이 거기까지 올라갈 수 있습니다 (이는 내 손가락으로 내비게이션 컨트롤러 위에 있음).

내가 놓았을 때, 그렇습니다-셀은 검색 창 바로 아래로 갈 것입니다. 그러나 이것은 당신이 그것을 그 위로 가져올 수있는 방법에 분명히 문제입니다.

어떻게하면 되나요? 더 쉬운 방법이 있습니까?



답변

UITableView아래로 스크롤 할 때 빈 칸에 쇼 의 셀이 있습니까?

그렇다면 문제는 UITableView보기에있는 내비게이션 컨트롤러로 인해 추가 된 삽입물 일 수 있습니다. 스크롤이 발생하지 않은 경우 탐색 모음 아래에 컨텐츠를 배치하기 위해 삽입 된 내용이 테이블보기에 추가됩니다. 표를 스크롤하면 내용이 스크롤되어 투명한 탐색 막대 아래에 표시됩니다. 이 동작은 물론 테이블보기가 탐색 표시 줄에서 직접 시작하는 경우에만 필요합니다. 여기에는 해당되지 않습니다.

주목해야 할 또 다른 사항은 iOS가보기 계층 구조의 첫 번째보기 UIScrollView또는 하위 항목 (예 : UITableViewUICollectionView) 인 경우에만 콘텐츠 삽입을 조정한다는 것입니다 . 뷰 계층 구조에 여러 개의 스크롤 뷰가 포함 된 automaticallyAdjustsScrollViewInsets경우 첫 번째 스크롤 뷰만 조정합니다.

이 동작을 변경하는 방법은 다음과 같습니다.

a) 인터페이스 빌더

  • 뷰 컨트롤러를 선택하십시오
  • 개방형 속성 관리자
  • IB의 속성 관리자 (보기 컨트롤러가 선택된 경우)에는 “스크롤보기 삽입 조정”이라는 속성이 있으며 기본적으로 켜져 있습니다. 이 옵션을 선택 취소하십시오 :


    ( Dheeraj D 의 이미지 제공 )

어떤 Xcode 버전이이 옵션을 도입했는지 확실하지 않지만 (릴리스 정보에서이 옵션을 발견하지는 못했지만) 적어도 버전 5.1.1에서는 사용할 수 있습니다.

편집 : 혼란을 피하기 위해 이것은 주석에서 언급 된 세 번째 옵션이었습니다

b) 프로그래밍 방식으로

이것을 ie에 추가하십시오 viewDidLoad( Slavco Petkovski 의 답변과 Cris R 의 의견에 대한 신용 )

// Objective-C
self.automaticallyAdjustsScrollViewInsets = NO;

// Swift
self.automaticallyAdjustsScrollViewInsets = false

c) 이것은 고등학생과 관련이있을 수 있습니다

추가하여이 문제를 해결할 수 있습니다

tableView.contentInset = UIEdgeInsetsZero

//Swift 3 Change
tableView.contentInset = UIEdgeInsets.zero

또는 IB를 사용하고 있고 탐색 표시 줄이 투명하지 않은 경우 (스크린 샷에서 알 수 없음)

  • 뷰 컨트롤러를 선택하십시오
  • 개방형 속성 관리자
  • View Controller 옵션 모서리 확장 섹션에서 “상단 막대 아래”를 선택 취소합니다.

답변

나는이 같은 문제가 있었고 UIView가 한 시점에 있다고 확신합니다. 전체 테이블보기를 복사하고 삭제 한 다음 다시 붙여 넣으면 문제가 해결되었습니다.


답변

스토리 보드에서 테이블 뷰를 선택하고 스타일이 “그룹화”대신 “일반”으로 설정되어 있는지 확인하십시오. 속성 관리자 탭에서이 설정을 찾을 수 있습니다.


답변

내 경우에는 뷰 계층의 UITableView 아래에 UILabel이 있습니다.

나는 그것을“앞으로”움직 였고 빈 공간이 나타났다. 왜 그런지 확실하지 않지만 tableView 아래에 아무것도 없으면 공백이 숨겨집니다.

또한 스토리 보드의 뷰 컨트롤러 관리자에서 “스크롤 뷰 삽입 조정”을 확인 / 취소 할 수 있습니다.

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


답변

위의 어느 것도 나를 도와주지 않았습니다. 그러나 이렇게 하면 도움이되었습니다 .

self.tableView.contentInset = UIEdgeInsetsMake(-64, 0, 0, 0)

‘-64’대신 탐색 막대의 높이에 따라 다른 숫자를 입력 할 수 있습니다.


답변

미리 추가되어있을 수 있습니다 UIRefreshControl. 다음과 같은 코드 로이 문제가 있습니다.

self.refreshControl = [[UIRefreshControl alloc] init];{
    [self.refreshControl setAttributedTitle:[[NSAttributedString alloc]
                                             initWithString:@"Your string"]];
    [self.refreshControl addTarget:self
                            action:@selector(updateScreen)
                  forControlEvents:UIControlEventValueChanged];

}

보시다시피, 나는 self.refreshController즉시init

그러나 설정 refreshControl후 설정하면 최상위 공간이 방해가되지 않습니다.

UIRefreshControl *refreshControl  = [[UIRefreshControl alloc] init];{
    [self.refreshControl setAttributedTitle:[[NSAttributedString alloc]
                                             initWithString:@"Your String"]];
    [self.refreshControl addTarget:self
                            action:@selector(updateScreen)
                  forControlEvents:UIControlEventValueChanged];
    self.refreshControl = refreshControl;
}


답변

iOS 11 에서이 작업을 수행하는 경우 더 이상 사용되지 않아 자동 조정 ScrollViewInsets가 작동하지 않습니다.이 게시물의 답변에 따라 다음 코드가 작동했습니다. https://stackoverflow.com/a/44391269/5476481

        if #available(iOS 11.0, *) {
            tblView.contentInsetAdjustmentBehavior = .never
        } else {
            automaticallyAdjustsScrollViewInsets = false
        }

도움이 되었기를 바랍니다.