UITableView에서 테이블 헤더의 높이를 설정하는 방법은 무엇입니까?
UITableView 클래스 및 위임 참조에 대한 Apple 문서를 살펴 보았지만 테이블 헤더 높이를 명시 적으로 설정하는 방법을 찾을 수 없습니다.
다음 대리자를 사용하여 테이블 셀 높이를 설정합니다.
-(CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
다음 대리자를 사용하여 섹션 머리글 / 바닥 글 높이를 설정합니다.
-(CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section
-(CGFloat)tableView:(UITableView *)tableView heightForFooterInSection:(NSInteger)section
누구든지 테이블 머리글 / 바닥 글 높이를 설정하도록 도와 주시겠습니까?
감사.
tableHeaderView의 프레임 속성을 설정하기 만하면됩니다.
좋은 해킹을 찾았습니다. 프레임 속성 수정 후 아래 줄 추가
self.tableView.tableHeaderView = self.tableView.tableHeaderView;
트릭은 tableHeaderView 속성에 뷰를 할당 할 때 UITableView가 높이 (실제로 프레임)를 캐싱한다는 것입니다. 위의 줄은 높이를 다시 할당합니다.
override func viewDidLayoutSubviews() {
super.viewDidLayoutSubviews()
sizeHeaderToFit()
}
private func sizeHeaderToFit() {
let headerView = tableView.tableHeaderView!
headerView.setNeedsLayout()
headerView.layoutIfNeeded()
let height = headerView.systemLayoutSizeFitting(UILayoutFittingCompressedSize).height
var frame = headerView.frame
frame.size.height = height
headerView.frame = frame
tableView.tableHeaderView = headerView
}
여전히 필요한 경우 속성을 설정하려고 했습니까?
self.tableView.tableHeaderView
필요한 높이를 계산하고 다음에 대한 새보기를 설정하는 경우 tableHeaderView
:
CGRect frame = self.tableView.tableHeaderView.frame;
frame.size.height = newHeight;
self.tableView.tableHeaderView = [[UIView alloc] initWithFrame:frame];
작동합니다.
먼저 tableview의 바닥 글 / 머리글을 nil로 설정 한 경우에만 나와 함께 작동합니다.
self.footer = self.searchTableView.tableFooterView;
CGRect frame = self.footer.frame;
frame.size.height = 200;
self.footer.frame = frame;
self.searchTableView.tableFooterView = nil;
self.searchTableView.tableFooterView = self.footer;
self.footer가 바닥 글보기가 할당 해제되는 것을 방지하기 위해 강력한 참조인지 확인합니다.
Swift 4-HEIGHT_VIEW로 높이를 관리 할 수 있습니다.이 대구 만 추가하면 작동합니다.
override func viewDidLayoutSubviews() {
super.viewDidLayoutSubviews()
let HEIGHT_VIEW = 60
tableView.tableFooterView?.frame.size = CGSize(width: tblView.frame.width, height: CGFloat(HEIGHT_VIEW))
tableView.tableHeaderView?.frame.size = CGSize(width:tblView.frame.width, height: CGFloat(HEIGHT_VIEW))
}
생성자 UIView(frame:_)
를 사용하여 Footer Wrapper View를 만든 다음 FooterView에 xib 파일을 사용하는 경우 xib에서 뷰를 생성하고 래퍼 뷰에 subView로 추가하십시오. 그런 다음 래퍼를 tableView.tableFooterView = fixWrapper
.
let fixWrapper = UIView(frame: CGRectMake(0, 0, UIScreen.mainScreen().bounds.width, 54)) // dont remove
let footer = UIView.viewFromNib("YourViewXibFileName") as! YourViewClassName
fixWrapper.addSubview(footer)
tableView.tableFooterView = fixWrapper
tableFootterCostView = footer
그것은 나를 위해 완벽하게 작동합니다! 요점은 constructor로 바닥 글 뷰를 만드는 것 (frame:_)
입니다. UIView ()를 생성하고 프레임 속성을 할당하더라도 작동하지 않을 수 있습니다.
IB에서 테이블 헤더보기로보기를 추가하는 경우 Tab 5 (크기 검사기)의 IB에서 해당보기의 프레임을 설정합니다.
tableView의 main headerView에 XIB를 사용하는 경우 XIB를 freeform으로 설정하여 원하는대로 Height를 설정하고 Autoresizing의 상단, 하단 블록 및 상단, 하단 화살표를 클릭 해제 할 수 있습니다. 수평 부분 만 선택됩니다. .
원하는 높이로 UIView를 만들 수 있으며 (너비는 UITableView의 너비 여야 함) 내부에 적절한 크기의 그림이있는 UIImageView를 배치 할 수 있습니다. 자동으로 늘어나지 않습니다.
컨테이너보기에 더 높은 높이를 지정하여 내부 UIImageView 위와 아래에 여백을 제공 할 수도 있습니다.
또한 예를 들어 이미지를 컨테이너 헤더보기의 중간에 배치하기 위해 Translation 변환을 할당 할 수 있습니다.
func tableView(_ tableView: UITableView, heightForHeaderInSection section: Int) -> CGFloat {
}
또는 이와 같이 사용할 수도 있습니다
tableView.estimatedSectionHeaderHeight
Xcode 10에서는 "Size Inspector"탭에서 섹션 높이의 머리글과 바닥 글을 설정할 수 있습니다.
당신은 프로그래밍 방식으로 설정하면 tableHeaderView
, 다음 단지 내부로 설정 viewDidLayoutSubviews
.
override func viewDidLayoutSubviews() {
super.viewDidLayoutSubviews()
setupTableViewHeader()
}
private func setupTableViewHeader() {
// Something you do to set it up programatically...
tableView.tableHeaderView = MyHeaderView.instanceFromNib()
}
프로그래밍 방식으로 설정하지 않은 경우이 링크를 기반으로 @Kris가 답변 한 것과 유사하게 수행해야합니다.
override func viewDidLayoutSubviews() {
super.viewDidLayoutSubviews()
sizeHeaderToFit()
}
private func sizeHeaderToFit() {
if let headerView = tableView.tableHeaderView {
headerView.setNeedsLayout()
headerView.layoutIfNeeded()
let height = headerView.systemLayoutSizeFitting(UIView.layoutFittingCompressedSize).height
var frame = headerView.frame
frame.size.height = height
headerView.frame = frame
tableView.tableHeaderView = headerView
}
}
@kris 대답은 Objective-C에서 원하는 사람에게 도움이됩니다.
다음은 코드입니다.
-(void)viewDidLayoutSubviews{
[super viewDidLayoutSubviews];
[self sizeHeaderToFit];
}
-(void)sizeHeaderToFit{
UIView *headerView = self.tableView.tableHeaderView;
[headerView setNeedsLayout];
[headerView layoutIfNeeded];
CGFloat height = [headerView systemLayoutSizeFittingSize:UILayoutFittingCompressedSize].height;
CGRect frame = headerView.frame;
frame.size.height = height;
headerView.frame = frame;
self.tableView.tableHeaderView = headerView;
}
테이블보기 기본 속성 사용 :
- (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section
{
return 35.0;
}
감사
tableView의 headerView 높이를 변경 한 경우 다음 코드를 사용하여 tableView를 업데이트하십시오.
Objc :
[tableView beginUpdates];
tableView.endUpdates()
빠른:
tableView.beginUpdates()
tableView.endUpdates()
자동 레이아웃을 사용하면 다음과 같은 작업을 수행 할 수 있습니다.
tableView.sectionHeaderHeight = UITableViewAutomaticDimension
tableView.estimatedSectionHeaderHeight = <your-header-height>
또는 헤더의 높이가 다른 경우 계속해서 구현하십시오.
func tableView(_ tableView: UITableView, heightForHeaderInSection section: Int) -> CGFloat {
return <your-header-height>
}
참고 URL : https://stackoverflow.com/questions/5581116/how-to-set-the-height-of-table-header-in-uitableview
'Programing' 카테고리의 다른 글
Firebug : 마우스 움직임으로 변경되는 요소를 검사하는 방법은 무엇입니까? (0) | 2020.11.07 |
---|---|
Java 생성자 스타일 : 검사 매개 변수가 null이 아닙니다. (0) | 2020.11.07 |
EF 코드 우선 : 임의의 행을 얻는 방법 (0) | 2020.11.07 |
mongoose가 응용 프로그램에서 실행하는 모든 쿼리를 기록합니다. (0) | 2020.11.07 |
사용자 데이터 업데이트-ASP.NET ID (0) | 2020.11.07 |