[ios] UITableView에서 구분 기호의 전체 너비를 설정하는 방법

나는이 UITableView분리기는 전체 폭이없는 곳입니다. 왼쪽보다 10 픽셀 정도 끝납니다. 에서이 코드를 가지고 놀았습니다 viewDidLoad().

self.tableView.layoutMargins = UIEdgeInsetsZero;

또한 스토리 보드에서 사용자 정의 또는 기본 선택기를 선택할 수 있습니다. 이제 채워진 모든 셀에는 전각 선택기가 없지만 비어있는 셀에는 전폭이 있습니다.

이 문제를 어떻게 해결할 수 있습니까?



답변

이것은 Xcode 6.4 및 Swift 1.2를 사용하는 iOS 8.4-9.0 장치에서 저에게 효과적이었습니다.

func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
    var cell = UITableViewCell()


    cell.preservesSuperviewLayoutMargins = false
    cell.separatorInset = UIEdgeInsetsZero
    cell.layoutMargins = UIEdgeInsetsZero

    return cell
}

스위프트 5 업데이트 :

cell.preservesSuperviewLayoutMargins = false
cell.separatorInset = UIEdgeInsets.zero
cell.layoutMargins = UIEdgeInsets.zero


답변

이 게시물에서 답을 얻었습니다 : iOS 8 UITableView separator inset 0 not working

이 코드를 UITableViewController

-(void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath
{
    if ([cell respondsToSelector:@selector(setSeparatorInset:)]) {
        [cell setSeparatorInset:UIEdgeInsetsZero];
    }

    if ([cell respondsToSelector:@selector(setLayoutMargins:)]) {
        [cell setLayoutMargins:UIEdgeInsetsZero];
    }
}

-(void)viewDidLayoutSubviews
{
    [super viewDidLayoutSubviews];
    if ([self.tableView respondsToSelector:@selector(setSeparatorInset:)]) {
        [self.tableView setSeparatorInset:UIEdgeInsetsZero];
    }

    if ([self.tableView respondsToSelector:@selector(setLayoutMargins:)]) {
        [self.tableView setLayoutMargins:UIEdgeInsetsZero];
    }
}


답변

당신의 UITableViewCell

Interface Builder에서 Attributes Inspector로 이동하여 간단히 “15”를 0으로 변경하십시오. 변경하려는 모든 셀에 대해이를 수행하십시오.

실습

당신은에 추가해야 할 수도 [cell setLayoutMargins:UIEdgeInsetsZero];있습니다tableViewCell


답변

스위프트 3 :

override func viewDidLoad() {
  super.viewDidLoad()

  tableView.separatorInset = .zero
  tableView.layoutMargins = .zero
}


답변

  1. 당신의 선택 UITableViewCell
  2. Atributes Inspector로 이동
  3. 분리기로 이동하여 “사용자 정의 삽입”으로 변경하십시오.
  4. 설정 left및 / 또는 right필드. (기본적 left: 15으로 right: 0)

작동 방식보기 (을 사용하여 left: 100) :

여기에 이미지 설명을 입력하십시오

결과:

여기에 이미지 설명을 입력하십시오


답변

나는 UITableViewController두 개의 삽입 설정을 상속 하고 추가 로 false willDisplayCell를 설정 preservesSuperviewLayoutMargins해야했습니다. 스위프트에서는 다음과 같이 보입니다 :

override func tableView(_tableView: UITableView, willDisplayCell cell: UITableViewCell, forRowAtIndexPath indexPath: NSIndexPath) {

    if cell.respondsToSelector("setSeparatorInset:") {
        cell.separatorInset = UIEdgeInsetsZero
    }
    if cell.respondsToSelector("setLayoutMargins:") {
        cell.layoutMargins = UIEdgeInsetsZero
    }
    if cell.respondsToSelector("setPreservesSuperviewLayoutMargins:") {
        cell.preservesSuperviewLayoutMargins = false
    }
}


답변

구분 기호 Inset는 기본적으로 왼쪽에서 15입니다. 구분 기호 Inset옵션을에서 auto로 변경 custom하고 삽입을로 설정하십시오 0.

여기에 이미지 설명을 입력하십시오