programing

UITableView의 셀 앞에 빈 공간 제거

mailnote 2023. 4. 11. 22:19
반응형

UITableView의 셀 앞에 빈 공간 제거

는 현재 는재현 a a를 .UITableView뷰 컨트롤러 상단이 아닌 다른 위치에 있습니다.이와 같이 네비게이션 바를 설명하기 위해 상단의 헤더를 추가하려고 하지만 컨트롤러 상단이 없기 때문에 이 작업은 필요하지 않습니다.

왼쪽 상단 모서리를 붙이면UITableView내가 원하는 곳에 세포를 배치하지 않는다.

셀이 올바른 위치에 있도록 테이블 보기를 위로 이동하면 다른 문제가 발생합니다. 스크롤할 때 셀이 위로 이동할 수 있습니다(이것은 내비게이션 컨트롤러 위에 손가락을 올려놓은 상태입니다).

손을 놓으면 셀이 검색창 바로 아래로 이동하지만 어떻게 셀을 위로 이동시킬 수 있는지가 분명 문제입니다.

이걸 어떻게 하면 좋을까요?더 쉬운 방법은 없나요?

이 을 해 .UITableView빈간 표시 시시 시? ???

경우 되어 있을 수 있습니다.UITableView뷰에 있는 내비게이션 컨트롤러 때문입니다.스크롤이 발생하지 않았을 때 내용을 탐색바 아래에 배치하기 위해 삽입이 테이블뷰에 추가됩니다.테이블이 스크롤되면 내용이 스크롤되고 투명한 탐색 모음 아래에 표시됩니다.이 동작은 테이블 뷰가 네비게이션바 바로 아래에서 시작되는 경우에만 필요합니다.여기서는 그렇지 않습니다.

하나 뷰 내의 첫입니다.UIScrollView후예( 후예UITableView ★★★★★★★★★★★★★★★★★」UICollectionView되어 있는 automaticallyAdjustsScrollViewInsets첫 번째 것만 조정합니다.

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

a) 인터페이스 빌더

  • 뷰 컨트롤러를 선택합니다.
  • 속성 검사기 열기
  • IB의 속성 검사기(뷰 컨트롤러를 선택한 경우)에는 기본적으로 켜져 있는 "Adjust croll view insets"라는 속성이 있습니다.이 옵션의 선택을 해제합니다.


    (이미지 제공: Dheeraj D)

어떤 Xcode 버전이 이 옵션을 도입했는지 알 수 없지만(릴리스 노트에는 기재되어 있지 않습니다), 적어도 버전 5.1.1에서는 사용할 수 있습니다.

편집: 혼란을 피하기 위해 댓글에 언급된 세 번째 옵션입니다.

b) 프로그램적으로

이것을 에 추가합니다. 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 options Extend Edges 섹션의 "Top Bars" 선택을 취소합니다.

나도 같은 문제가 있었고 나도 한때 유비뉴가 있었다고 확신해테이블 뷰 전체를 복사하여 삭제하고 다시 붙여넣기만 하면 수정이 됩니다.

스토리보드에서 테이블 뷰를 선택하고 스타일이 "그룹화"가 아닌 "일반"으로 설정되어 있는지 확인합니다.이 설정은 속성 Inspector 탭에서 확인할 수 있습니다.

의 어느 것도 도움이 되지 않았지만, 이렇게 하면 도움이 되었습니다.

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

-64탐색 모음의 높이에 따라 다른 숫자를 입력할 수 있습니다.

My Case에서는 뷰 계층의 UITable View 아래에 UILabel이 있습니다.

"앞으로" 움직이자 빈칸이 나타났다.이유는 모르겠지만 이렇게 동작합니다.tableView 아래에 아무것도 있으면 공백이 숨겨집니다.

또한 스토리보드의 뷰 컨트롤러 인스펙터에서 "Adjust Scroll View Insets" 체크/체크 해제를 시도할 수도 있습니다.

여기에 이미지 설명 입력

iOS 11에서 이 작업을 수행하는 경우 자동으로 Scroll View 조정인스톨은 권장되지 않기 때문에 기능하지 않습니다.이 게시물의 답변에 따라 다음 코드가 동작합니다.https://stackoverflow.com/a/44391269/5476481

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

이게 도움이 됐으면 좋겠다.

첨가된 것이 수 .UIRefreshControl하다

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

}

바와 같이, 시시 as as as as, 는 as as as로 설정했습니다.self.refreshControllerinit

<고객명>을하면 <고객명>님이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;
}

스위프트 5

테이블 제거로 시도HeaderViewtableFooterView

var frame = CGRect.zero
frame.size.height = .leastNormalMagnitude
tblView.tableHeaderView = UIView(frame: frame)
tblView.tableFooterView = UIView(frame: frame)

[ [ ]를 합니다.contentInsetstableview하지 않다

여기에 이미지 설명 입력

확실히 말할 수는 없지만 프로토타입 셀의 시작 부분과 UITable View의 상단 사이에 여분의 UIView가 끼어 있는 것 같습니다.추가한 텍스트나 행을 삭제하면 내 이미지는 당신의 이미지와 똑같이 보입니다.

여기에 이미지 설명 입력

맨 위에 있는 추가 공간의 원인은 아직 알 수 없지만 UITableView를 공백으로 삭제하고 새 공간으로 교체하면 공간이 절약됩니다.

실수로 UIView를 끌어다 놓은 것 같은데 선택할 수 없어서 삭제할 수 없었어요.

제 어플리케이션에서도 이런 문제가 있었습니다.tableView0 의 .false★★★★★★에automaticallyAdjustsScrollViewInsets하지만 소용없었다.

마침내 나는 효과적인 해결책을 얻었다.이 길이 맞는지 모르겠어요., ,, 현의 heightForHeaderInSection★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★이를 수행하려면 0이 아닌 값을 반환해야 합니다(return 0은 이전과 같은 공간을 표시합니다).

override func tableView(_ tableView: UITableView, heightForHeaderInSection section: Int) -> CGFloat {

    return 0.1
}

iOS 11 이상에서는, Apple이 컨텐츠 삽입을 조정하기 위해서 속성을 변경했습니다.contentInsetAdjustmentBehavior를 설정합니다..neverUICollectionView,UIScrollView,UITableView.

if #available(iOS 11.0, *) {

    // For scroll view
    self.scrollView.contentInsetAdjustmentBehavior = .never

    // For collection view
    self.collectionView.contentInsetAdjustmentBehavior = .never

    // For table view
    self.tableView.contentInsetAdjustmentBehavior = .never

} else {
    self.automaticallyAdjustsScrollViewInsets = false
}

이것이 당신에게 도움이 되길 바랍니다.

스토리보드 또는 xib에서 테이블 뷰 프레임을 확인합니다.디폴트로는 마이닝의 위치값이 y이기 때문에 버그가 발생합니다.

2017년에 나에게 효과가 있는 것은 이 한 줄뿐이다.

네비게이션 컨트롤러?navigationBar.is반투명 = false

그게 왜 영향을 미치는지 모르겠어요누군가 설명해 줄 수 있을 거야하지만 나는 이것이 대부분의 사람들이 찾는 답이라고 확신한다.

이 문제는 메뉴에서 테이블 뷰로 프로토타입 셀을 끌어다 놓았을 때 발생했습니다.그래서 나는 그것을 삭제하고 테이블 뷰 검사기 속성에서 프로토타입 셀을 1로 설정했다.

프로그래밍 방식으로 하고 있는데, 다른 서브뷰를 모두 추가한 후 addSubview(tableView)를 하단으로 이동시키면 문제가 해결되었습니다!

왜 시뮬레이터가 아닌 장치에만 표시되는지 모르겠지만 적어도 간단한 해결책이 있습니다!

UITableView가 뷰 컨트롤러의 첫 번째 서브뷰가 아닌 한 빈 공간은 표시되지 않습니다.

솔루션:뷰 컨트롤러의 첫 번째 서브뷰로 숨김/클리어 뷰 오브젝트(뷰, 라벨, 버튼 등)를 추가합니다(UITableView와 동일하지만 그 앞에 있음).

UIView는 테이블 상단과 하단에 삽입할 수 있습니다(드래그 앤 드롭).속성을 투명하게 설정하고 높이를 1ppx로 설정합니다.이것은 셀 앞에 있는 여분의 패딩을 제거하기 위한 것입니다.

계층 내 마지막 보기가 아닌 tableView도 이 문제가 있었습니다.제 경우 위 뷰가 있어서 (서로 겹치지 않더라도) 계층 내 tableView 위로 끌어다 놓았습니다.

나는 이것에 대한 해결책을 방금 찾았다.

테이블 뷰와 clic Editor를 선택하면 됩니다.-> 배열 -> 앞으로 보내기

효과가 있었고 여러분 모두에게 도움이 되길 바랍니다.

저는 ContainerViewController를 사용하여 UITableViewController를 넣었습니다.ContainerViewController 삭제 후.문제는 없어진다.

Xcode 8 버그...

Storyboard UITableView스타일이 [보통]으로 설정되어 있는 경우는, 우선 이것을 시험해 주세요.

표 유형을 그룹화(Grouped)로 설정한 후 일반으로 다시 설정합니다.이를 통해 앱의 UITableView 선두에 있는 공간이 제거되었습니다.

저 같은 경우에는 컨테이너 뷰를 사용하고 있었습니다.(메인뷰 -->컨태너뷰 -->UITableView)

상단의 여유 공간은 디바이스 알림 바의 공간(시간이 표시되는 장소, 배터리)과 같다고 생각합니다.정말이야, 그건 추측이 아니야.

UI Builder에서 작업을 수행했습니다.

  • Table View Controller complete
  • 속성 검사기 열기
  • -> 뷰 컨트롤러 -> 레이아웃 -> "전체 화면 선택"으로 이동합니다.

이 코드를 사용하여 테이블이 생성되는 viewDidLoad 또는 viewDidAppear에 입력할 수 있습니다.

// Remove blank space on header of table view
 videoListUITableView.contentInset = UIEdgeInsetsZero;

// The iOS device = iPhone or iPod Touch
CGSize iOSDeviceScreenSize = [[UIScreen mainScreen] bounds].size;

// Set the height of the table on the basis of number of rows
videoListUITableView.frame = CGRectMake(videoListUITableView.frame.origin.x, videoListUITableView.frame.origin.y, videoListUITableView.frame.size.width, iOSDeviceScreenSize.height-100);



// Hide those cell which doesn't contain any kind of data
self.videoListUITableView.tableFooterView = [[UIView alloc] init];

I just found a solution for this. In my case, i was using TabBarViewController, A just uncheck the option 'Adjust Scroll View Insets'. Issues goes away. https://i.stack.imgur.com/vRNfV.png

하여 ViewController의 Extended Edge를 설정합니다.underTopBar속성이 선택 해제되어 있습니다.

같은 문제를 겪고 있었다.viewDidLoad에 다음 사항을 추가하여 해결했습니다.

self.extendedLayoutIncludesOpaqueBars = true

최신 답변: XCode 12.5.1, IOS 14

그룹화된 테이블뷰의 디폴트 동작에서는 선두에 이러한 종류의 빈 헤더가 있습니다.

않는 으로 '어울리지 않도록', '어울리지 않도록', '어울리지 않도록를 사용하는 ..plain이치노

어떤 이유로 할 수 없는 경우, 다음 예시와 같이 높이가 0이 아닌 보기로 헤더를 설정해야 합니다.

self.tableView.tableHeaderView = UIView(frame: CGRect(x: 0, y: 0,
                                                      width: self.tableView.bounds.size.width,
                                                      height: .leastNonzeroMagnitude))

컨텐츠 인스톨을 제로로 설정합니다.

언급URL : https://stackoverflow.com/questions/18906919/remove-empty-space-before-cells-in-uitableview

반응형