UITableView 섹션 헤더의 글꼴 크기를 변경합니다.
UITableView 섹션 헤더의 텍스트 글꼴 크기를 가장 쉽게 변경할 수 있는 방법을 알려주실 수 있나요?
다음 방법을 사용하여 섹션 제목을 구현했습니다.
- (NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section
그런 다음 다음 다음 방법을 사용하여 섹션 헤더 높이를 성공적으로 변경하는 방법을 이해했습니다.
- (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section
다음 방법을 사용하여 UITableView 셀을 채웁니다.
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
그러나 섹션 헤더 텍스트의 글꼴 크기(또는 글꼴 스타일)를 실제로 늘리는 방법에 대해 고민하고 있습니다.
누가 좀 도와주실래요?감사해요.
또 하나의 은 '보다 낫다'에 반응하는 것입니다.UITableViewDelegate
메서드 법입니다.willDisplayHeaderView
. 패스된 뷰는 실제로 .의 인스턴스입니다UITableViewHeaderFooterView
요.
아래 예제에서는 글꼴을 변경하고 제목 텍스트를 셀 내에서 세로 및 가로로 가운데에 배치합니다.여러분도 역시 '보다 낫다'에 응답해야 한다는 점에 유의하세요.heightForHeaderInSection
즉, 여기서 헤더 높이를 변경하기로 결정한 경우입니다.willDisplayHeaderView
을 사용하세요.)
그런 다음 '보다 낫다'에 응답할 수 있습니다.titleForHeaderInSection
다른 섹션 제목으로 구성된 헤더를 재사용하는 방법입니다.
목표-C
- (void)tableView:(UITableView *)tableView willDisplayHeaderView:(UIView *)view forSection:(NSInteger)section {
UITableViewHeaderFooterView *header = (UITableViewHeaderFooterView *)view;
header.textLabel.textColor = [UIColor redColor];
header.textLabel.font = [UIFont boldSystemFontOfSize:18];
CGRect headerFrame = header.frame;
header.textLabel.frame = headerFrame;
header.textLabel.textAlignment = NSTextAlignmentCenter;
}
Swift 1.2입니다.
(참고: 뷰 컨트롤러가 의 하위 항목인 경우: UITableViewController
이렇게 선언을 해야합니다override func
을 클릭합니다.
override func tableView(tableView: UITableView, willDisplayHeaderView view: UIView, forSection section: Int)
{
let header:UITableViewHeaderFooterView = view as! UITableViewHeaderFooterView
header.textLabel.textColor = UIColor.redColor()
header.textLabel.font = UIFont.boldSystemFontOfSize(18)
header.textLabel.frame = header.frame
header.textLabel.textAlignment = NSTextAlignment.Center
}
Swift 3.0입니다.
또한 이 코드는 헤더 보기가 UITableView가 아닌 경우 앱이 충돌하지 않도록 합니다.HeaderFooterView:
override func tableView(_ tableView: UITableView, willDisplayHeaderView view: UIView, forSection section: Int) {
guard let header = view as? UITableViewHeaderFooterView else { return }
header.textLabel?.textColor = UIColor.red
header.textLabel?.font = UIFont.boldSystemFont(ofSize: 18)
header.textLabel?.frame = header.bounds
header.textLabel?.textAlignment = .center
}
그러나 이 기능을 재정의해야 할 수도 있습니다.
목표-C:
- (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section
Swift에서 다음을 수행합니다.
func tableView(_ tableView: UITableView, viewForHeaderInSection section: Int) -> UIView?
다음과 같이 시도해 보십시오.
목표-C:
- (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section {
UILabel *myLabel = [[UILabel alloc] init];
myLabel.frame = CGRectMake(20, 8, 320, 20);
myLabel.font = [UIFont boldSystemFontOfSize:18];
myLabel.text = [self tableView:tableView titleForHeaderInSection:section];
UIView *headerView = [[UIView alloc] init];
[headerView addSubview:myLabel];
return headerView;
}
Swift에서 다음을 수행합니다.
func tableView(_ tableView: UITableView, viewForHeaderInSection section: Int) -> UIView? {
let myLabel = UILabel()
myLabel.frame = CGRect(x: 20, y: 8, width: 320, height: 20)
myLabel.font = UIFont.boldSystemFont(ofSize: 18)
myLabel.text = self.tableView(tableView, titleForHeaderInSection: section)
let headerView = UIView()
headerView.addSubview(myLabel)
return headerView
}
의 답은 정답이지만, 이 방법을 사용할 때는 주의해야 합니다. mosca1337 답 、 그 、 그 、 그 、 그 、 그 、 그 、 그 、 。텍스트가 한 줄보다 긴 헤더의 높이를 계산해야 합니다.tableView:heightForHeaderInSection:
네, 그렇습니다.
가장 선호하는 방법은 모양 API를 사용하는 것입니다.
[[UILabel appearanceWhenContainedIn:[UITableViewHeaderFooterView class], nil] setFont:[UIFont boldSystemFontOfSize:28]];
이렇게 하면 글꼴이 변경되지만 높이 자체를 관리하기 위해 테이블에서 나옵니다.
최적의 결과를 얻으려면 테이블 보기를 하위 한 다음 격납 체인에 추가합니다(내부).appearanceWhenContainedIn:
특정 테이블 뷰에 대해서만 글꼴을 변경합니다를 클릭하여 특정 테이블 뷰에 대해서만 글꼴을 변경합니다.
iOS 7에서는 이것을 사용합니다.
-(void)tableView:(UITableView *)tableView willDisplayHeaderView:(UIView *)view forSection:(NSInteger)section
{
UITableViewHeaderFooterView *header = (UITableViewHeaderFooterView *)view;
header.textLabel.font = [UIFont boldSystemFontOfSize:10.0f];
header.textLabel.textColor = [UIColor orangeColor];
}
여기 헤더 크기 조정 기능이 있는 Swift 3.0 버전이 있습니다.
override func tableView(_ tableView: UITableView, willDisplayHeaderView view: UIView, forSection section: Int) {
if let header = view as? UITableViewHeaderFooterView {
header.textLabel!.font = UIFont.systemFont(ofSize: 24.0)
header.textLabel!.textColor = UIColor.orange
}
}
Swift 3: 입니다.
크기만 조정하는 가장 간단한 방법은 다음과 같습니다.
func tableView(_ tableView: UITableView, willDisplayHeaderView view: UIView, forSection section: Int) {
let header = view as! UITableViewHeaderFooterView
if let textlabel = header.textLabel {
textlabel.font = textlabel.font.withSize(15)
}
}
Swift 2.0:을 클릭합니다.
- 기본 섹션 헤더를 전체 사용자 지정 가능한 UILabel로 바꿉니다.
다음과 같이 viewForHeaderInSection을 구현합니다.
override func tableView(tableView: UITableView, viewForHeaderInSection section: Int) -> UIView? {
let sectionTitle: String = self.tableView(tableView, titleForHeaderInSection: section)!
if sectionTitle == "" {
return nil
}
let title: UILabel = UILabel()
title.text = sectionTitle
title.textColor = UIColor(red: 0.0, green: 0.54, blue: 0.0, alpha: 0.8)
title.backgroundColor = UIColor.clearColor()
title.font = UIFont.boldSystemFontOfSize(15)
return title
}
- 기본 헤더를 변경합니다(기본값 유지).
구현 will표시합니다.HeaderView는 다음과 같습니다.
override func tableView(tableView: UITableView, willDisplayHeaderView view: UIView, forSection section: Int) {
if let view = view as? UITableViewHeaderFooterView {
view.backgroundView?.backgroundColor = UIColor.blueColor()
view.textLabel!.backgroundColor = UIColor.clearColor()
view.textLabel!.textColor = UIColor.whiteColor()
view.textLabel!.font = UIFont.boldSystemFontOfSize(15)
}
}
다음을 기억하십시오.정적 셀을 사용하는 경우, UITableView의 맨 위 때문에 첫 번째 섹션 헤더가 다른 섹션 헤더보다 높게 채워집니다. 이 문제를 해결하려면:
다음과 같이 heightForHeaderInSection을 구현합니다.
override func tableView(tableView: UITableView, heightForHeaderInSection section: Int) -> CGFloat {
return 30.0 // Or whatever height you want!
}
여기 있습니다, 여기에 몇 가지 방법을 적으셔야 합니다.#스위프트 5
func tableView(_ tableView: UITableView, willDisplayHeaderView view: UIView, forSection section: Int) {
let header = view as? UITableViewHeaderFooterView
header?.textLabel?.font = UIFont.init(name: "Montserrat-Regular", size: 14)
header?.textLabel?.textColor = .greyishBrown
}
func tableView(_ tableView: UITableView, heightForHeaderInSection section: Int) -> CGFloat {
return 26
}
행운을 빌어요
이 방법을 사용하여 글꼴 크기, 글꼴 스타일 및 머리글 배경도 설정할 수 있습니다.여기에는 두 가지 방법이 있습니다.
첫 번째 방법
- (void)tableView:(UITableView *)tableView willDisplayHeaderView:(UIView *)view forSection:(NSInteger)section{
UITableViewHeaderFooterView *header = (UITableViewHeaderFooterView *)view;
header.backgroundView.backgroundColor = [UIColor darkGrayColor];
header.textLabel.font=[UIFont fontWithName:@"Open Sans-Regular" size:12];
[header.textLabel setTextColor:[UIColor whiteColor]];
}
두 번째 방법
- (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section{
UILabel *myLabel = [[UILabel alloc] initWithFrame:CGRectMake(0, 0, tableView.frame.size.width, 30)];
// myLabel.frame = CGRectMake(20, 8, 320, 20);
myLabel.font = [UIFont fontWithName:@"Open Sans-Regular" size:12];
myLabel.text = [NSString stringWithFormat:@" %@",[self tableView:FilterSearchTable titleForHeaderInSection:section]];
myLabel.backgroundColor=[UIColor blueColor];
myLabel.textColor=[UIColor whiteColor];
UIView *headerView = [[UIView alloc] init];
[headerView addSubview:myLabel];
return headerView;
}
Swift 4 버전의 Leo Natan 답변은 다음과 같습니다.
UILabel.appearance(whenContainedInInstancesOf: [UITableViewHeaderFooterView.self]).font = UIFont.boldSystemFont(ofSize: 28)
사용자 지정 글꼴을 설정하려는 경우 사용할 수 있습니다.
if let font = UIFont(name: "font-name", size: 12) {
UILabel.appearance(whenContainedInInstancesOf: [UITableViewHeaderFooterView.self]).font = font
}
Swift 2: 입니다.
OP가 요청한 대로 크기만 조정하고 굵게 표시된 글꼴로 설정하지 마십시오.
func tableView(tableView: UITableView, willDisplayHeaderView view: UIView, forSection section: Int) {
if let headerView = view as? UITableViewHeaderFooterView, textLabel = headerView.textLabel {
let newSize = CGFloat(16)
let fontName = textLabel.font.fontName
textLabel.font = UIFont(name: fontName, size: newSize)
}
}
»는 다음과 같습니다.textView
재산에 관한 것입니다.UITableViewHeaderFooterView
이겁니다.문서에 따르면 글꼴 크기를 변경하는 올바른 방법은 다음과 같습니다.UIListContentConfiguration
요.
override func tableView(_ tableView: UITableView, willDisplayHeaderView view: UIView, forSection section: Int) {
guard let view = view as? UITableViewHeaderFooterView else { fatalError() }
var contentConfiguration = view.defaultContentConfiguration()
contentConfiguration.textProperties.font = UIFont.systemFont(ofSize: 30)
view.contentConfiguration = contentConfiguration
}
여기서 제목을 설정할 때 주의해 주세요.titleForHeaderInSection
이겁니다.제목은 '보다 낫다'로 정해야 합니다.contentConfiguration.text = "<Your Title>"
요.
인정하건대, 저는 이것이 다소 융통성이 없다는 것을 알게 되었고 결국 제 자신의 단순하고 머리글 뷰를 돌려보냈습니다.viewForHeaderInSection
요.
이것이 swift 5에 대한 저의 해결책입니다.
헤더 섹션 보기를 완전히 제어하려면 이전 게시물에서 보듯이 컨트롤러에서 tableView(:viewForHeaderInsection::) 메서드를 사용해야 합니다.그러나 성능을 개선하기 위해 매번 새로운 뷰를 생성하지 말고 테이블 셀을 재사용하는 것처럼 헤더 뷰를 재사용할 것을 권장합니다.이것은 tableView.dequeueReusable 메서드에 의한 것입니다.HeaderFooterView(ID: )입니다.하지만 문제는 이 재사용 기능을 사용하기 시작하면 글꼴이 예상대로 작동하지 않는다는 것입니다.색, 정렬 같은 다른 것들은 모두 괜찮지만 글꼴만 있습니다.몇 가지 논의가 있었지만, 저는 다음과 같이 작업을 했습니다.
문제는 tableView.dequeueReusable입니다.HeaderFooterView(withIdentifier:)는 항상 셀을 반환하는 tableView.dequeneReuseCell(:)과 다릅니다.전자는 아무도 없는 경우 0을 반환합니다.재사용 헤더 보기를 반환하더라도 원래 클래스 유형이 아니라 UITableHeaderFooterView입니다.그래서 당신은 당신의 코드에 따라 판단하고 행동해야 합니다.기본적으로 0인 경우 완전히 새로운 헤더 뷰를 가져옵니다.0이 아니면 제어할 수 있도록 강제로 캐스팅합니다.
override func tableView(_ tableView: UITableView, viewForHeaderInSection section: Int) -> UIView? {
let reuse_header = tableView.dequeueReusableHeaderFooterView(withIdentifier: "yourHeaderID")
if (reuse_header == nil) {
let new_sec_header = YourTableHeaderViewClass(reuseIdentifier:"yourHeaderID")
new_section_header.label.text="yourHeaderString"
//do whatever to set color. alignment, etc to the label view property
//note: the label property here should be your custom label view. Not the build-in labelView. This way you have total control.
return new_section_header
}
else {
let new_section_header = reuse_section_header as! yourTableHeaderViewClass
new_sec_header.label.text="yourHeaderString"
//do whatever color, alignment, etc to the label property
return new_sec_header}
}
언급URL : https://stackoverflow.com/questions/19802336/changing-font-size-for-uitableview-section-headers 입니다.
'programing' 카테고리의 다른 글
Kotlin: 목록 캐스팅을 사용하는 방법:선택되지 않은 캐스트: kotlin.collections입니다.kotlin.colutions에 등록합니다.목록입니다. (0) | 2023.04.25 |
---|---|
실패할 때까지 셸 명령을 반복적으로 실행하시겠습니까? (0) | 2023.04.25 |
여러 bash 스크립트에서 pushd/popd 스택을 표시하지 않습니다(quiet pushd/popd). (0) | 2023.04.25 |
csv 파일의 열 하나를 추출하는 방법입니다. (0) | 2023.04.25 |
엑셀 vba에서 1초 미만의 시간 지연을 제공하는 방법은 무엇입니까? (0) | 2023.04.25 |