program tip

iOS 7 UITableView : 탐색 모음과 첫 번째 셀 사이의 공간을 제거하는 방법

radiobox 2020. 12. 6. 21:26
반응형

iOS 7 UITableView : 탐색 모음과 첫 번째 셀 사이의 공간을 제거하는 방법


내 문제는 iOS 7을 그룹화 UITableView하면 테이블 상단과 첫 번째 셀과의 간격이 있습니다.

이상한 점은 처음으로 콘텐츠를로드 할 때 테이블이 첫 번째 이미지와 같이 정상으로 나타나지만 아래로 스크롤하면 두 번째와 같이 상단과 첫 번째 셀 사이에 공백이 나타납니다.

여기에 이미지 설명 입력 여기에 이미지 설명 입력

스타일 플레인을 사용하면이 동작이 나오지 않지만 안타깝게도 그룹화 된 테이블보기를 사용해야합니다.

에 대한 아이디어가 있습니까?


ViewDidLoad방법 에 이것을 추가하십시오.

self.automaticallyAdjustsScrollViewInsets = NO;

대답은 저와 제 팀에게 매우 재미 있었고 매력적으로 작동했습니다.

  • Interface Builder에서 테이블 뷰를 뷰 계층 구조의 다른 뷰 아래로 이동하십시오.

이유:

이 첫 번째보기가 UITableView 인 경우보기 계층 구조의 첫 번째보기에서만 이런 일이 발생 하는 것을 관찰했습니다 . 따라서 다른 모든 유사한 UITableView에는 첫 번째를 제외하고는이 성가신 섹션이 없습니다. UITableView를 뷰 계층 구조의 첫 번째 위치에서 이동하려고 시도했으며 모든 것이 예상대로 작동했습니다.


Storyboard에서 xib 또는 컨트롤러를 선택하여 View Controller의 속성 검사기로 이동합니다. 레이아웃 에서 스크롤보기 삽입 조정을 선택 취소합니다 . 그것은 문제를 해결할 것입니다여기에 이미지 설명 입력


그룹화 된 스타일과 1 개의 그룹 만있는 UITableView를 사용하는 경우 대신 일반 스타일을 사용하여 문제를 해결하십시오.

UITableViewController *tableViewController;
tableViewController = [[UITableViewController alloc] initWithStyle:UITableViewStylePlain];

이 문제에 대한 가장 간단한 해결책 tableView은 다음과 같습니다.

tableView.tableHeaderView = [[UIView alloc] initWithFrame:CGRectMake(0.0f, 0.0f, self.tableView.bounds.size.width, 0.01f)];

이 문제를 해결하려면 ViewController에서이 필드를 선택 취소했는지 확인하십시오.

ViewController >> Attibutes Inspector >> Layout (선택 취소-Scroll View Insets 조정 )

여기에 이미지 설명 입력

이것이 충분하지 않으면 TableView에서 시도하고 Style을 Plain으로 설정하십시오 .

예시 이미지

이것은 당신의 문제를 해결할 것입니다


여러분! 나는 같은 문제가 있었다. 탐색 모음과 첫 번째 셀 사이에 여유 공간이있는 TableView가 나타납니다. 이 코드는 나를 구했습니다.

- (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section
{
    if (section == 0) {
        return 10;
    }
    else return 2;
}

UITableView 자체 위와 셀 사이에도 공간이 있습니다. 위의 두 가지 답변에서 내 솔루션을 찾았습니다. 누구도 두 솔루션을 놓치지 않도록 다시 게시하십시오.

이것은 위에서 공간을 제거했습니다.

self.automaticallyAdjustsScrollViewInsets = NO;

그리고 이것은 셀 아래의 공백을 제거했습니다 : UITableView의 'Style'속성을 'Plain'으로 설정


, 및 을 ( Xcode 7.3.1iOS9) 사용하고 swift 2있습니다. 저에게 도움이 된 것을 공유하고 싶습니다.

ViewDidLoad방법 에 이것을 추가하십시오.

self.automaticallyAdjustsScrollViewInsets = false;

iOS 7부터는 자동으로 그룹 헤더와 일부 공간이 제공됩니다. 앱을 설정 앱과 비교하면 알 수 있습니다. 헤더 높이를 가능한 한 작게 설정하도록 UITableView에 지시하여이 문제를 해결할 수 있습니다. 첫 번째 그룹 머리글을 숨기는 방법을 참조하십시오 .


나는 이것이 오래 전에 대답했다는 것을 알고 있지만 비슷한 상황에 처한 다른 사람들을 위해 결국 나를 위해 일한 것을 공유 할 것입니다.

xib를 사용하는 경우 최상위보기를 선택하고 Attributes Inspector의 Simulated Metrics 영역에서 'Status Bar'를 'None'으로 설정합니다. 내 간격 문제를 바로 수정했습니다.


나를 위해 이것은 작동하지 않았다

self.automaticallyAdjustsScrollViewInsets = NO;

이로 인해 테이블보기가 NavigationBar 아래에있을뿐입니다.

나를 위해 일한 것은 스토리 보드로 이동하여 tableView의 크기를 조정하는 것이 었습니다. 내 tableView는 statusBar를 허용하기 위해 상단에 20px 간격이있는 것 같습니다. 나는 그것을 확장했고 모든 것이 완벽하게 정렬되었습니다.


나는 매우 이상한 상황에서 내 테이블 뷰 중 하나의 상단에서이 여분의 공간을보고 있었다.

UIScrollView탐색 스택에서 첫 번째 컨트롤러의 루트보기로를 추가 한 후 다음 컨트롤러를 Show Detailsegue 로 제시하면 다음 컨트롤러 가 테이블보기 위에 공간을 갖게됩니다.

나를위한 해결책은 segue를로 변경하는 것이었고 Present Modally모든 것이 정상으로 돌아갔습니다.

segue 변경의 가장 이상한 부분은 루트 뷰를 추가 하기 전에UIScrollViewShow Detailsegue가 다음 컨트롤러를 모달로 제시하고 있다는 것입니다. 그러나 후에 내가 루트를 추가 UIScrollViewShow DetailSEGUE이었다 밀어 (내가 원하지 않는 것을이었다) 다음의 컨트롤러.


유사한 문제가 발생했습니다. 심지어 automaticAdjustsScrollViewInsets를 NO로 설정했습니다. 이것은 나를 위해 해결되었습니다.

- (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section;
{
    return CGFLOAT_MIN;
}

에서 UIViewController.hiOS9 SDK 방법이있다 :

@property(nonatomic,assign) BOOL automaticallyAdjustsScrollViewInsets NS_AVAILABLE_IOS(7_0); // Defaults to YES

재산이 아니므로

self.automaticallyAdjustsScrollViewInsets = NO; 

해야한다

-(BOOL)automaticallyAdjustsScrollViewInsets{   
     return NO;
}

참고 URL : https://stackoverflow.com/questions/19111451/ios-7-uitableview-how-to-remove-space-between-navigation-bar-and-first-cell

반응형