UITableView에서 프로토 타입 셀의 왼쪽 여백을 어떻게 조정합니까?
나는를 만드는 경우 UITableViewController
를 통해 예를 들어 새 프로젝트 파일 → ... → 아이폰 OS → 마스터 - 세부 응용 프로그램 엑스 코드는, (A)는 UITableView
프로토 타입 세포 생성됩니다.
생성 된 뷰 계층은 다음과 같습니다.
왼쪽 "여백"은 아래 주황색으로 표시된 것처럼 Cell의 Content UIView
왼쪽 가장자리와 "Title"텍스트 UILabel
요소 사이에 자동으로 생성 됩니다.
그 결과 장치의 화면 가장자리와 UILabel
런타임시 텍스트 사이에 해당 여백이 생깁니다.
그렇다면이 간격 세트의 너비는 어디에 있으며 어떻게 조정할 수 있습니까?
UILabel에 대한 크기 검사기의 컨트롤은 회색으로 표시됩니다.
내가 선호하는 옵션은 Interface Builder 내에서이 간격의 너비를 설정할 수있는 것이지만,이 간격이 설정되는 위치와 프로그래밍 방식으로 변경하는 방법도 이해하고 싶습니다.
contentInset
테이블보기의 속성 만 설정 하면됩니다. 필요에 따라 값을 설정할 수 있습니다.
self.tableView.contentInset = UIEdgeInsetsMake(0, -15, 0, 0);
출력 결과
이동 Main.storyboard
> 선택 UITableViewCell
> Attributes Inspector
. 구분자 드롭 다운 목록을 기본 삽입에서 사용자 정의 삽입으로 변경합니다. 왼쪽 삽입을 15에서 0으로 변경
iOS 8 부터는 cell 속성을 사용할 수 있습니다 layoutMargins
. 따라서 셀 여백을 조정하는 올바른 방법은 다음 tableView:cellForRowAtIndexPath
과 같이 사용자 또는 사용자 정의 에서이 속성을 설정 UITableViewCell
하는 것입니다.
override func awakeFromNib() {
super.awakeFromNib()
self.layoutMargins = UIEdgeInsetsZero //or UIEdgeInsetsMake(top, left, bottom, right)
self.separatorInset = UIEdgeInsetsZero //if you also want to adjust separatorInset
}
나는 이것이 누군가를 도울 수 있기를 바랍니다.
아래 링크에 언급 된대로 코드에 메서드를 추가하면됩니다.
제가 언급하고 싶은 방법은
-(void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath{
if ([tableView respondsToSelector:@selector(setSeparatorInset:)]) {
[tableView setSeparatorInset:UIEdgeInsetsZero];
}
if ([tableView respondsToSelector:@selector(setLayoutMargins:)]) {
[tableView setLayoutMargins:UIEdgeInsetsZero];
}
if ([tableView respondsToSelector:@selector(setLayoutMargins:)]) {
cell.preservesSuperviewLayoutMargins = NO;
[cell setLayoutMargins:UIEdgeInsetsZero];
}
if ([cell respondsToSelector:@selector(setSeparatorInset:)]){
[cell setSeparatorInset:UIEdgeInsetsZero];
}
}
TableView "Attributes inspector"에서 Separator Insets를 Left = 0 인 "Custom"으로 설정하세요.이게 전부입니다!
WTIFS에서 언급했듯이 UITableViewCell
의 indentation
속성은 기본 제공 셀 스타일에서 텍스트 레이블을 들여 쓰기하는 좋은 방법입니다. 좋은 왼쪽 여백을 얻으려면 다음과 같이하십시오.
cell.indentationLevel = 2;
그러나 이것은 imageView에서 작동하지 않습니다.
셀에 xib를 사용하는 경우 "여백 기준"이 선택 해제되어 있는지 확인하십시오. 다음 스크린 샷과 같이 검사기를 통해 확인할 수 있습니다.
다음은 Chetan의 대답의 빠른 버전입니다.
override func tableView(_ tableView: UITableView, willDisplay cell: UITableViewCell, forRowAt indexPath: IndexPath) {
tableView.separatorInset = UIEdgeInsets.zero
tableView.layoutMargins = UIEdgeInsets.zero
cell.preservesSuperviewLayoutMargins = false
cell.layoutMargins = UIEdgeInsets.zero
cell.separatorInset = UIEdgeInsets.zero
}
그냥 쉬운 해결책을 생각 해낸 것 같아요. 롤.
The top answer have some problem...it decrease the left gap, but resulting a right gap.
I used the constrains in Interface Builder.
First add a -15 left margin constrain to the Table View.
Then add some Indentation to the Table Cell to make the contents look better.
↘
Here're some step-by-step pics:
Add the constraint. Remember to uncheck the "spacing to nearest neighbor".
The Table Cells will move left. But seems too close to margin.
So choose the Table Cell, and add some indentation in the right area.
그리고 셀의 텍스트 레이블의 왼쪽 여백 만 변경 Horizontal Space Constraint 'Constant'
하려면 원하는 패딩에 따라 16 또는 8 로 변경하십시오 (이것은 nib 파일에 있습니다). '상수'에 도달 할 수없는 경우 레이블을 선택하고 FrameRectangle View에서 x 좌표를 변경 한 다음 왼쪽에있는 구속 핀을 클릭합니다)
'programing' 카테고리의 다른 글
Amazon RDS : 기존 인스턴스로 스냅 샷 복원 (0) | 2021.01.18 |
---|---|
java.lang.noclassdeffounderror : com.google.android.gms.R $ styleable (0) | 2021.01.17 |
Swift를 사용하는 문자열의 하위 문자열 인덱스 (0) | 2021.01.17 |
Room에서 데이터 무결성을 확인할 수 없습니다. (0) | 2021.01.17 |
LINQ to SQL을 사용하여 IN 하위 쿼리를 어떻게 처리 할 수 있습니까? (0) | 2021.01.17 |