How to customise header section in static cell?

前端 未结 3 2008
[愿得一人]
[愿得一人] 2020-12-17 19:46

I want to customise the header section in my application but it\'s in static cell. I tried to make one cell to be my header by including identifier and add a new file to con

相关标签:
3条回答
  • 2020-12-17 20:05

    There are a couple of ways to customize the header section in a UITableView. For instance, if all you want to do is change the text, you can do so in the attributes inspector while making sure your TableViewSection is selected:

    However, if you want the ability to do customizations such as text size, tont, capitalizations - any customizations inherent to UILabels, you'll need to override this method from the UITableViewController:

      override func tableView(tableView: UITableView, willDisplayHeaderView view: UIView, forSection section: Int) {
        let header = view as! UITableViewHeaderFooterView
        header.textLabel.textColor = UIColor(red: 243/255, green: 153/255, blue: 193/255, alpha: 1.0)
        header.textLabel.font = UIFont(name: "Helvetica Neue", size: 18)
        header.textLabel.text = "About Us"
        header.textLabel.frame = header.frame
        header.textLabel.textAlignment = NSTextAlignment.Left
      }
    

    For example, in the code above, I took the header that was passed as a parameter and configured the textColor, font, text, alignment - really anything you can do on the UILabel can be done here.

    Before customization

    After customization

    0 讨论(0)
  • 2020-12-17 20:08

    This is the easy way to do it without set a new string, just leave text in header that used in UITableview with static cell as it and add this override for header in your code

    - (void)tableView:(UITableView *)tableView willDisplayHeaderView:(UIView *)view forSection:(NSInteger)section{
        if ([view isKindOfClass:[UITableViewHeaderFooterView class]]) {
            ((UITableViewHeaderFooterView*)view).textLabel.text = [((UITableViewHeaderFooterView*)view).textLabel.text capitalizedString];
        }
    }
    
    0 讨论(0)
  • 2020-12-17 20:25

    Also you can customise header section use Nib. Simple example below.

    HeaderView.xib (Screenshot)

    HeaderView.swift

    import UIKit
    
    class HeaderView: UITableViewHeaderFooterView {
    
        @IBOutlet weak var titleLabel: UILabel!
        @IBOutlet weak var titleBackgroundView: UIView!
    
         static var nib: UINib {
           return UINib(nibName: identifier, bundle: nil)
         }
    
         static var identifier: String {
           return String(describing: self)
         }
    
        override func awakeFromNib() {
          titleBackgroundView.layer.shadowColor = UIColor.gray.cgColor
          titleBackgroundView.layer.shadowOpacity = 0.5
          titleBackgroundView.layer.shadowOffset = CGSize(width: 0, height: 5)
          titleBackgroundView.layer.shadowRadius = 5
        }
    }
    

    ProfileTableViewController.swift

    import UIKit
    
    class ProfileTableViewController: UITableViewController {
    
        override func viewDidLoad() {
          super.viewDidLoad()
            tableView.register(HeaderView.nib, forHeaderFooterViewReuseIdentifier: HeaderView.identifier)
        }
    
    
        override func tableView(_ tableView: UITableView, viewForHeaderInSection section: Int) -> UIView? {
    
          let headerView = tableView.dequeueReusableHeaderFooterView(withIdentifier: HeaderView.identifier) as! HeaderView
            switch section {
            case 0:
              headerView.titleLabel.text = "Profile"
              return headerView
            case 1:
              headerView.titleLabel.text = "Social"
              return headerView
            default:
              return UIView()
        }
    
        override func tableView(_ tableView: UITableView, heightForHeaderInSection section: Int) -> CGFloat {
            return 50
        }
    }
    

    Simulator (Screenshot)

    0 讨论(0)
提交回复
热议问题