현재 UITableView
뷰 컨트롤러 상단이 아닌 다른 위치에을 넣으려고합니다 . 이 말을하면 탐색 모음을 설명하기 위해 상단에 헤더를 추가하려고하지만 컨트롤러 상단에 없기 때문에 필요하지 않습니다.
UITableView
셀을 원하는 위치 의 왼쪽 상단 모서리에 넣으면 셀이 배치되지 않습니다.
이제 테이블보기를 위로 이동하여 셀이 올바른 위치에 있으면 다른 문제가 발생합니다. 스크롤 할 때 셀이 거기까지 올라갈 수 있습니다 (이는 내 손가락으로 내비게이션 컨트롤러 위에 있음).
내가 놓았을 때, 그렇습니다-셀은 검색 창 바로 아래로 갈 것입니다. 그러나 이것은 당신이 그것을 그 위로 가져올 수있는 방법에 분명히 문제입니다.
어떻게하면 되나요? 더 쉬운 방법이 있습니까?
답변
UITableView
아래로 스크롤 할 때 빈 칸에 쇼 의 셀이 있습니까?
그렇다면 문제는 UITableView
보기에있는 내비게이션 컨트롤러로 인해 추가 된 삽입물 일 수 있습니다. 스크롤이 발생하지 않은 경우 탐색 모음 아래에 컨텐츠를 배치하기 위해 삽입 된 내용이 테이블보기에 추가됩니다. 표를 스크롤하면 내용이 스크롤되어 투명한 탐색 막대 아래에 표시됩니다. 이 동작은 물론 테이블보기가 탐색 표시 줄에서 직접 시작하는 경우에만 필요합니다. 여기에는 해당되지 않습니다.
주목해야 할 또 다른 사항은 iOS가보기 계층 구조의 첫 번째보기 UIScrollView
또는 하위 항목 (예 : UITableView
및 UICollectionView
) 인 경우에만 콘텐츠 삽입을 조정한다는 것입니다 . 뷰 계층 구조에 여러 개의 스크롤 뷰가 포함 된 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
}
도움이 되었기를 바랍니다.