나는이 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
}
답변
- 당신의 선택
UITableViewCell
- Atributes Inspector로 이동
- 분리기로 이동하여 “사용자 정의 삽입”으로 변경하십시오.
- 설정
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
}
}