your programing

UITableView 아래의 추가 구분 기호 제거

lovepro 2020. 9. 30. 11:08
반응형

UITableView 아래의 추가 구분 기호 제거


행이 4 개인 테이블보기를 설정할 때 채워진 행 아래에 추가 구분선 (또는 추가 빈 셀)이 있습니다.

이 세포를 어떻게 제거합니까?

UITableView의 추가 구분선 이미지


인터페이스 빌더 (iOS 9 이상)

UIView를 테이블로 드래그하기 만하면됩니다. 스토리 보드에서는 사용자 지정 셀 아래 상단에 있습니다. 이름을 "바닥 글"로 지정하는 것이 좋습니다.

여기에서는 명확성을 위해 녹색으로 표시되며, 아마도 선명한 색상을 원할 것입니다.

높이를 조정하면 원하는대로 테이블의 "하단 바운스"를 처리하는 방법에 영향을 줄 수 있습니다. (일반적으로 높이 0이 좋습니다).

여기에 이미지 설명 입력


프로그래밍 방식으로 수행하려면 :

빠른

override func viewDidLoad() {
    super.viewDidLoad()
    self.tableView.tableFooterView = UIView()
}

목표 -C

iOS 6.1 이상

- (void)viewDidLoad 
{
    [super viewDidLoad];

    // This will remove extra separators from tableview
    self.tableView.tableFooterView = [UIView new];
}

또는 원하는 경우

    self.tableView.tableFooterView = [[UIView alloc] initWithFrame:CGRectZero];

iOS에서 역사적으로 :

테이블 뷰 컨트롤러에 추가 ...

- (CGFloat)tableView:(UITableView *)tableView heightForFooterInSection:(NSInteger)section {
     // This will create a "invisible" footer
     return CGFLOAT_MIN;
 }

그리고 필요한 경우 ...

- (UIView *)tableView:(UITableView *)tableView viewForFooterInSection:(NSInteger)section
{        
    return [UIView new];

    // If you are not using ARC:
    // return [[UIView new] autorelease];
}

여기에 그룹화 된 테이블 스타일을 사용하여이를 수행하는 또 다른 방법이 있으며 아마도 추측하지 못할 것입니다. 표에 머리글과 바닥 글을 추가 하면 (아마도 하나 또는 다른 것으로 충분하며 선택하지 않았 음) 구분 기호가 필러 / 빈 행에서 사라집니다.

나는 고기가 많은 손가락이있는 테이블 셀 대신 버튼을 누르는 위험을 줄이기 위해 테이블의 상단과 하단에 약간의 공간을 원했기 때문에 이것을 우연히 발견했습니다. 여기에 빈 뷰를 머리글과 바닥 글로 고정하는 방법이 있습니다. 원하는 높이를 사용하면 추가 구분선이 제거됩니다.

- (void) addHeaderAndFooter
{
    UIView *v = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 320, 10)];
    v.backgroundColor = [UIColor clearColor];
    [self.myTableView setTableHeaderView:v];
    [self.myTableView setTableFooterView:v];
    [v release];
}

@Casebash에 대한 응답으로 내 앱의 코드 (iTunes 스토어의 "AcmeLists"목록 관리자 ...)로 돌아가서 확인을 위해 addHeaderAndFooter 메서드를 단락했습니다. 그것 없이는 여분의 행 구분 기호가 있습니다. 코드를 사용하면이 창 스냅에서 볼 수있는 내용이 있습니다. 테이블 행 구분 기호 없음 그림 . 그래서 왜 당신에게 효과가 없었을 지 모르겠습니다. 또한 테이블 뷰에 사용자 지정 바닥 글이 있으면 그 아래에있는 빈 행에 대한 행 구분 기호 그리기를 중지해야한다는 것이 이해가됩니다. 그것은 끔찍할 것입니다. 참고로 화면에서 볼 수있는 것보다 많은 행이있는 테이블을 살펴본 다음 두 행이있는 테이블을 살펴 보았습니다. 두 경우 모두 불필요한 구분 기호가 없습니다.

사용자 지정보기가 실제로 추가되지 않았을 수 있습니다. 이를 확인하려면 배경색을 clearColor, 예를 들어 [UIColor redColor]. 표 하단에 빨간색 막대가 보이지 않으면 바닥 글이 설정되지 않은 것입니다.


Swift의 UITableView에서 빈 행에 대한 추가 구분선 제거

override func viewDidLoad() {
    super.viewDidLoad()
    // Do any additional setup after loading the view, typically from a nib.
    self.yourTableview.tableFooterView = UIView()
}

wkw 답변 을 확장하고 싶습니다 .

높이가 0 인 바닥 글 만 추가하면됩니다. (sdk 4.2, 4.4.1에서 테스트 됨)

- (void) addFooter
{
    UIView *v = [[UIView alloc] initWithFrame:CGRectZero];

    [self.myTableView setTableFooterView:v];
}

또는 더 간단합니다-테이블 뷰를 설정하는 곳에 다음 줄을 추가하십시오.

//change height value if extra space is needed at the bottom.
[_tableView setTableFooterView:[[UIView alloc] initWithFrame:CGRectMake(0,0,0,0)]];

또는 더 간단하게-단순히 구분 기호를 제거하십시오.

[_tableView setTableFooterView:[UIView new]];

다시 wkw 덕분에 :)


스토리 보드를 사용하는 iOS 7 이상

a UIViewUITableView바닥 글로 드래그하기 만하면 됩니다. 바닥 글보기의 높이를 0으로 설정합니다.


이 시도. 그것은 나를 위해 일했습니다.

- (void) viewDidLoad
{
  [super viewDidLoad];

  // Without ARC
  //self.tableView.tableFooterView = [[[UIView alloc] init] autorelease];

  // With ARC, tried on Xcode 5
  self.tableView.tableFooterView = [UIView new];
}

Swift의 경우 :

    override func viewDidLoad() {
        super.viewDidLoad()
        tableView.tableFooterView = UIView()
    }

마지막에 빈 바닥 글을 추가하면 빈 셀을 숨길 수 있지만 매우보기 흉하게 보일 것입니다.

tableView.tableFooterView = UIView()

여기에 이미지 설명 입력

더 나은 방법이 있습니다. 표보기 끝에 1 개의 점 선을 바닥 글로 추가하면 빈 셀도 더 이상 표시되지 않습니다.

let footerView = UIView()
footerView.frame = CGRect(x: 0, y: 0, width: tableView.frame.size.width, height: 1)
footerView.backgroundColor = tableView.separatorColor
tableView.tableFooterView = footerView

여기에 이미지 설명 입력


Swift를 사용 하는 경우 tableview를 관리하는 컨트롤러의 viewDidLoad다음 코드를 추가합니다 .

override func viewDidLoad() {
    super.viewDidLoad()

    //...

    // Remove extra separators
    tableView.tableFooterView = UIView(frame: CGRectZero)
}

Swift 4.0의 경우 CGRectZero는 더 이상 사용되지 않으므로 사용해야합니다. CGRect.zero


J. Costa의 솔루션 발전 : 다음 코드 줄을 입력하여 테이블을 전체적으로 변경할 수 있습니다.

[[UITableView appearance] setTableFooterView:[[UIView alloc] initWithFrame:CGRectZero]];

가능한 첫 번째 메서드 내부 (보통 AppDelegate, in : application:didFinishLaunchingWithOptions:메서드).


나는이 질문이 대답을 받아 들였지만 여기에 추가 구분선을 숨기는 방법에 대해 다른 방법을 넣었습니다 UITableView.

tableView의 표준 구분선을 숨기고 각 셀의 맨 위에 사용자 정의 선을 추가 할 수 있습니다.

최신 정보:

사용자 지정 구분 기호를 추가하는 가장 쉬운 방법 UIView은 1px 높이의 간단한 부분 을 추가하는 것 입니다.

UIView* separatorLineView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 320, 1)];
separatorLineView.backgroundColor = [UIColor grayColor]; /// may be here is clearColor;
[cell.contentView addSubview:separatorLineView];

또는

    self.tblView=[[UITableView alloc] initWithFrame:CGRectMake(0,0,320,370) style:UITableViewStylePlain];
    self.tblView.delegate=self;
    self.tblView.dataSource=self;
    [self.view addSubview:self.tblView];

    UIView *v = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 320, 10)];
    v.backgroundColor = [UIColor clearColor];
    [self.tblView setTableHeaderView:v];
    [self.tblView setTableFooterView:v];
    [v release];

또는

- (float)tableView:(UITableView *)tableView heightForFooterInSection:(NSInteger)section {
    // This will create a "invisible" footer
    return 0.01f;
}

- (UIView *)tableView:(UITableView *)tableView viewForFooterInSection:(NSInteger)section
{
    // To "clear" the footer view
    return [[UIView new] autorelease];
}

또는 내가 좋아하는 가장 쉽고 간단한 방법은

self.tableView.tableFooterView = [[UIView alloc] init];

하나를 시도하십시오.


이 코드 ( Swift )를 추가하기 만하면 됩니다. .

tableView.tableFooterView = UIView()

uitableview 추가 구분선 숨기기 추가 구분선 숨기기 신속한 3.0에서 숨기기

 self.tbltableView.tableFooterView = UIView(frame: .zero)

Swift 는 다음과 잘 작동합니다.

tableView.tableFooterView = UIView()

마지막 셀 뒤에 구분 기호가 필요하지 않으면 바닥 글에 0에 가깝지만 0이 아닌 높이가 필요합니다.

귀하의 UITableViewDelegate:

func tableView(_ tableView: UITableView, heightForFooterInSection section: Int) -> CGFloat {
    return .leastNormalMagnitude
}

원하는 구분선 색상을 배경색으로, 100 % 너비, x0 y-1 위치에 1px 높이의 뷰를 tableViewCell에 추가하기 만하면됩니다. tableViewCell이 subview를 자르지 않고 tableView가 있어야합니다.

따라서 코드 또는 IB별로 해킹하지 않고 기존 셀 사이에서만 절대적으로 간단하고 작동하는 구분 기호를 얻습니다.

참고 : 수직 상단 바운스에서는 첫 번째 구분자가 표시되지만 기본 iOS 동작이므로 문제가되지 않습니다.


고정 된 높이의 행을 표시하기 위해 테이블보기를 사용하고 있었으므로 크기를 조정하고 스크롤 할 수 없도록 설정했습니다.


이 질문에 대한 많은 답변을 찾을 수 있습니다. 대부분은 UITableViewtableFooterView속성을 사용한 조작 과 관련이 있으며 이것은 빈 행을 숨기는 적절한 방법입니다. 편의를 위해 Interface Builder에서 빈 행을 켜거나 끌 수있는 간단한 확장을 만들었습니다. 요점 파일 에서 확인할 수 있습니다 . 시간을 조금 절약 할 수 있기를 바랍니다.

extension UITableView {

  @IBInspectable
  var isEmptyRowsHidden: Bool {
        get {
          return tableFooterView != nil
        }
        set {
          if newValue {
              tableFooterView = UIView(frame: .zero)
          } else {
              tableFooterView = nil
          }
       }
    }
}

용법:

tableView.isEmptyRowsHidden = true

여기에 이미지 설명 입력


프로그래밍 방식으로 UItableview 하단에서 추가 구분선을 제거하려면 두 줄의 코드를 작성하면 추가 구분선이 제거됩니다.

tableView.sectionFooterHeight = 0.f;
tableView.sectionHeaderHeight = 0.f;

이 트릭은 항상 나를 위해 일하고 있습니다.


Swift 4.0 확장

스토리 보드를위한 약간의 확장 :

여기에 이미지 설명 입력

extension UITableView {
    @IBInspectable
    var hideSeparatorForEmptyCells: Bool {
        set {
            tableFooterView = newValue ? UIView() : nil
        }
        get {
            return tableFooterView == nil
        }
    }
}

빠르고 쉬운 Swift 4 way.

override func viewDidLoad() {
     tableView.tableFooterView = UIView(frame: .zero)
}

정적 셀이있는 경우. Inspector 창에서 구분 기호를 끌 수도 있습니다. (분리기가 필요한 경우에는 바람직하지 않습니다.이 경우 위에 표시된 방법을 사용하십시오.)관리자 창


나는 승인 된 답변 (iOS 9+, Swift 2.2) 중 하나를 구현하는 데 행운이있었습니다. 나는 구현을 시도했다.

self.tableView.tableFooterView = UIView(frame: .zero)

그러나 제에는 아무런 영향이 없었습니다. 제가 tableView사용하고 있다는 사실과 관련이있을 수 있다고 생각합니다 UITableViewController.

대신 viewForFooterInSection메서드 를 재정의하기 만하면됩니다 ( tableFooterView다른 곳에 설정하지 않았습니다 ).

override func tableView(tableView: UITableView, viewForFooterInSection section: Int) -> UIView? {
    return UIView(frame: .zero)
}

이것은 tableView단일 섹션 에서 잘 작동했습니다 (여러 섹션이있는 경우 마지막 섹션을 지정해야합니다).


UITableview에서 원하지 않는 공간을 제거하려면 아래 두 가지 방법을 사용할 수 있습니다.

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

섹션이 하나 뿐인 경우 가장 빠르고 쉬운 방법은 테이블보기 스타일을 "일반"에서 "그룹화"로 설정하는 것입니다. (이미지 참조)

TableView 그룹화

섹션이 더있는 경우 헤더 높이를 0으로 설정해야 할 수 있습니다 (귀하 / 귀하의 고객 / 프로젝트 관리자의 취향에 따라 다름).

더 많은 섹션이 있고 머리글을 엉망으로 만들고 싶지 않은 경우 (가장 간단한 경우 한 줄인 경우에도) UIView를 바닥 글로 설정해야합니다 (이전 답변에서 설명한대로).


이 작은 tableview 확장을 추가했습니다.

extension UITableView {
     func removeExtraCells() {
         tableFooterView = UIView(frame: .zero)
     }
}

이것으로 시도

에 대한 목표 C

- (void)viewDidLoad 
 {
  [super viewDidLoad];
  // This will remove extra separators from tableview
  self.yourTableView.tableFooterView = [UIView new];
}

대한 스위프트

override func viewDidLoad() {
 super.viewDidLoad()
 self.yourTableView.tableFooterView = UIView()
}

이 시도

self.tables.tableFooterView = [[UIView alloc] initWithFrame:CGRectMake(0.0f, 0.0f, 320.0f, 10.0f)];

UIKit(가) 때 빈 셀을 만들지 않습니다 tableView있다 tableFooterView. 따라서 트릭을 만들고 높이가 0 인 UIView개체를 tableView.

tableView.tableFooterView = UIView()

경우에 당신은이 searchbarview(예를 들어 결과의 수를 제한하기 위해), 당신은 또한에 다음을 추가해야 shouldReloadTableForSearchString하고shouldReloadTableForSearchScope:

controller.searchResultsTable.footerView = [ [ UIView alloc ] initWithFrame:CGRectZero ];

스위프트에서 (I 4.0을 사용하고 있습니다), 사용자 정의 작성하여이 작업을 수행 할 수 있습니다 UITableViewCell클래스 및 방법. 그런 다음 모두 0 . (테이블보기가있는 메인 클래스는 명확한 배경을 가지고 있습니다) 색상.overridingsetSelectedseparator insets

override func setSelected(_ selected: Bool, animated: Bool) {
    super.setSelected(selected, animated: animated)

    // eliminate extra separators below UITableView
    self.separatorInset = UIEdgeInsets(top: 0, left: 0, bottom: 0, right: 0)
}

참고 URL : https://stackoverflow.com/questions/1369831/eliminate-extra-separators-below-uitableview

반응형