programing

UITableView에서 빈 셀 사이의 구분 기호를 강제로 숨길 수 있습니까?

fastcode 2023. 4. 15. 09:30
반응형

UITableView에서 빈 셀 사이의 구분 기호를 강제로 숨길 수 있습니까?

일반 스타일을 사용하는 경우UITableView충분한 수의 세포를 가지고 있다.UITableView모든 항목을 스크롤하지 않고 표시할 수 없습니다.셀 아래의 빈 공간에 구분 기호가 표시되지 않습니다.셀이 몇 개밖에 없는 경우 셀 아래의 빈 공간에는 구분 기호가 포함됩니다.

제가 이 모든 걸 강제로UITableView빈 공간에 있는 분리기를 제거할 수 있습니까?그렇지 않으면 동작을 상속하기 어렵게 만드는 각 셀에 대해 구분자를 그려 넣은 사용자 지정 배경을 로드해야 합니다.

여기서 비슷한 질문을 찾았는데 그룹화된 질문은 사용할 수 없습니다.UITableView구현에 있어.

iOS 7.* 및 iOS 6.1의 경우

가장 쉬운 방법은,tableFooterView속성:

- (void)viewDidLoad 
{
    [super viewDidLoad];

    // This will remove extra separators from tableview
    self.tableView.tableFooterView = [[UIView alloc] initWithFrame:CGRectZero];
}

이전 버전의 경우

TableViewController에 추가할 수 있습니다(이것은 임의의 수의 섹션에서 동작합니다).

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

부족하면 다음 코드도 추가합니다.

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

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

Swift의 경우:

override func viewDidLoad() {
    super.viewDidLoad()
    tableView.tableFooterView = UIView()  // it's just 1 line, awesome!
}

테이블 뷰의 바닥글을 정의하면 원하는 것을 얻을 수 있습니다.상세한 것에 대하여는, 다음의 회답을 참조해 주세요.UITable View 아래에 추가 구분 기호 제거

Daniel의 링크를 사용하여 보다 사용하기 쉽게 확장했습니다.

//UITableViewController+Ext.m
- (void)hideEmptySeparators
{
    UIView *v = [[UIView alloc] initWithFrame:CGRectZero];
    v.backgroundColor = [UIColor clearColor];
    [self.tableView setTableFooterView:v];
    [v release];
}

몇 가지 테스트를 한 결과 사이즈는 0이 될 수 있고 동작도 한다는 것을 알게 되었습니다.그래서 테이블 끝에 여백을 더하지 않습니다.해킹해줘서 고마워요저는 리다이렉트를 좋아하지 않기 때문에 여기에 올리기로 했습니다.

스위프트 버전

가장 쉬운 방법은 tableFooterView속성을 설정하는 것입니다.

override func viewDidLoad() {
    super.viewDidLoad()
    // This will remove extra separators from tableview
    self.tableView.tableFooterView = UIView(frame: CGRectZero)
}

Swift의 경우:

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

최신 Swift의 경우:

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

iOS 7 SDK를 사용하면 매우 간단합니다.

다음 행을 viewDidLoad 메서드에 추가합니다.

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

테이블 세팅separatorStyle로.UITableViewCellSeparatorStyleNone(코드 또는 IB의)가 유효합니다.

다음을 사용합니다.

UIView *view = [[UIView alloc] init];
myTableView.tableFooterView = view;
[view release];

viewDidLoad에서 실행 중입니다.하지만 어디에나 설정할 수 있습니다.

이 문제에 대해서는 다음 사항이 매우 효과적입니다.

- (UIView *)tableView:(UITableView *)tableView viewForFooterInSection:(NSInteger)section {

CGRect frame = [self.view frame];
frame.size.height =  frame.size.height - (kTableRowHeight * numberOfRowsInTable);

UIView *footerView = [[UIView alloc] initWithFrame:frame];
return footerView; }

여기서 kTableRow높이는 행 셀의 높이이고 number Of Rows In Table은 테이블에 있는 행의 수입니다.

도움이 됐으면 좋겠는데

브렌튼.

언급URL : https://stackoverflow.com/questions/1633966/can-i-force-a-uitableview-to-hide-the-separator-between-empty-cells

반응형