JRD*_*RD8 131 objective-c uitableview ios swift uitableviewsectionheader
有人可以告诉我最简单的方法来更改UITableView部分标题中文本的字体大小吗?
我使用以下方法实现了部分标题:
- (NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section
Run Code Online (Sandbox Code Playgroud)
然后,我了解如何使用此方法成功更改节标题高度:
- (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section
Run Code Online (Sandbox Code Playgroud)
我使用此方法填充了UITableView单元格:
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
Run Code Online (Sandbox Code Playgroud)
但是,我不知道如何实际增加部分标题文本的字体大小 - 或者字体样式?
有人可以帮忙吗?谢谢.
Mar*_*sel 353
另一种方法是响应该UITableViewDelegate
方法willDisplayHeaderView
.传递的视图实际上是一个实例UITableViewHeaderFooterView
.
下面的示例更改了字体,并且还在单元格中垂直和水平居中标题文本.请注意,您还应该响应heightForHeaderInSection
在表视图的布局中对标题高度进行任何更改.(也就是说,如果您决定在此willDisplayHeaderView
方法中更改标题高度.)
然后,您可以响应该titleForHeaderInSection
方法,以使用不同的节标题重用此配置的标头.
Objective-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;
}
Run Code Online (Sandbox Code Playgroud)
Swift 1.2
(注意:如果您的视图控制器是a的后代,则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
}
Run Code Online (Sandbox Code Playgroud)
Swift 3.0
如果您的标题视图不是UITableViewHeaderFooterView,此代码还可确保应用程序不会崩溃:
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.frame
header.textLabel?.textAlignment = .center
}
Run Code Online (Sandbox Code Playgroud)
mos*_*337 112
不幸的是,您可能必须覆盖此:
- (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section
Run Code Online (Sandbox Code Playgroud)
尝试这样的事情:
func tableView(_ tableView: UITableView, viewForHeaderInSection section: Int) -> UIView?
Run Code Online (Sandbox Code Playgroud)
Leo*_*ica 92
虽然mosca1337的答案是正确的解决方案,但要小心这种方法.对于文本长于一行的标题,您必须执行标题高度的计算,tableView:heightForHeaderInSection:
其中可能很麻烦.
一个更受欢迎的方法是使用外观API:
[[UILabel appearanceWhenContainedIn:[UITableViewHeaderFooterView class], nil] setFont:[UIFont boldSystemFontOfSize:28]];
Run Code Online (Sandbox Code Playgroud)
这将改变字体,同时仍然离开桌子来管理高度本身.
为获得最佳结果,请将表视图子类化,并将其添加到包含链(in appearanceWhenContainedIn:
)中,以确保仅针对特定表视图更改字体.
Mar*_*ria 24
对于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];
}
Run Code Online (Sandbox Code Playgroud)
这是带有标题大小调整的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
}
}
Run Code Online (Sandbox Code Playgroud)
jef*_*igy 17
斯威夫特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)
}
}
Run Code Online (Sandbox Code Playgroud)
Swift 2.0:
实现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
}
Run Code Online (Sandbox Code Playgroud)
实现willDisplayHeaderView,如下所示:
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)
}
}
Run Code Online (Sandbox Code Playgroud)
请记住:如果您使用的是静态单元格,由于UITableView的顶部,第一个部分标题的填充高于其他部分标题; 解决这个问题:
实现heightForHeaderInSection,如下所示:
override func tableView(tableView: UITableView, heightForHeaderInSection section: Int) -> CGFloat {
return 30.0 // Or whatever height you want!
}
Run Code Online (Sandbox Code Playgroud)
就是这样,你必须遵循这里写一些方法。#斯威夫特 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
}
Run Code Online (Sandbox Code Playgroud)
祝你好运
归档时间: |
|
查看次数: |
92208 次 |
最近记录: |