web-dev-qa-db-fra.com

swift ios 8 modifie le titre de police de la section dans une table

Je souhaite modifier le type et la taille de police d'un en-tête de section dans un contrôleur d'affichage de table.

Mon code:

func tableView(tableView: UITableView, willDisplayHeaderView view: UIView, forSection section: Int) {
    let header = view as! UITableViewHeaderFooterView
    header.textLabel.textColor = UIColor.blackColor()
    header.textLabel.font = UIFont(name: "Futura", size: 38)!
}

Mais ça ne marche pas. Des idées?

30
Ghost108

Swift

    override func tableView(_ tableView: UITableView, viewForHeaderInSection section: Int) -> UIView? {
            let headerView = UIView()
            headerView.backgroundColor = UIColor.lightGray

            let headerLabel = UILabel(frame: CGRect(x: 30, y: 0, width:
                tableView.bounds.size.width, height: tableView.bounds.size.height))
            headerLabel.font = UIFont(name: "Verdana", size: 20)
            headerLabel.textColor = UIColor.white
            headerLabel.text = self.tableView(self.tableView, titleForHeaderInSection: section)
            headerLabel.sizeToFit()
            headerView.addSubview(headerLabel)

            return headerView
        }

    override func tableView(_ tableView: UITableView, heightForHeaderInSection section: Int) -> CGFloat {
        return 40
    }
28
AdamVanBuskirk
override func tableView(tableView: UITableView, willDisplayHeaderView view: UIView, forSection section: Int)
{
    let header = view as! UITableViewHeaderFooterView
    header.textLabel?.font = UIFont(name: "Futura", size: 38)!
    header.textLabel?.textColor = UIColor.lightGrayColor()
}
75
Atticus
func tableView(tableView: UITableView, willDisplayHeaderView view: UIView, forSection section: Int) 
{
    let header = view as! UITableViewHeaderFooterView
    header.textLabel?.font = UIFont(name: "Futura", size: 11)
    header.textLabel?.textColor = UIColor.lightGrayColor()
}
35
Jayesh Miruliya

Mise à jour pour Swift

func tableView(_ tableView: UITableView, willDisplayHeaderView view: UIView, forSection section: Int) {

    let header = view as? UITableViewHeaderFooterView
    header?.textLabel?.font = UIFont(name: "Futura", size: 12) // change it according to ur requirement
    header?.textLabel?.textColor = UIColor.red // change it according to ur requirement
}
13
iAj

J'ai trouvé que le moyen le plus simple consiste à effectuer les opérations suivantes dans votre contrôleur View ou dans votre contrôleur View Table.

func tableView(tableView: UITableView, willDisplayHeaderView view: UIView, forSection section: Int) {

    let header = view as! UITableViewHeaderFooterView
    header.textLabel?.font = UIFont(name: "FontName", size: 14)


}
7
mooncitizen

Solution de travail simple: (Swift 2.0)

func tableView(tableView: UITableView, viewForHeaderInSection section: Int) -> UIView? {

            //Create label and autoresize it
            let headerLabel = UILabel(frame: CGRectMake(0, 0, tableView.frame.width, 2000))
            headerLabel.font = UIFont(name: "Avenir-Light", size: 30)
            headerLabel.text = self.tableView(self.tableView, titleForHeaderInSection: section)
            headerLabel.sizeToFit()

            //Adding Label to existing headerView
            let headerView = UIView()
            headerView.addSubview(headerLabel)

            return headerView
}
6
Phil
 func tableView(tableView: UITableView,
        viewForHeaderInSection section: Int) -> UIView? {
                let hView = UIView(frame: CGRectMake(0, 0, tableView.frame.width, 44))
                hView.backgroundColor = UIColor.whiteColor()
                let hLabel = UILabel(frame: CGRectMake(15, 2, 30, 44))
                hLabel.font = UIFont(name: "YOUR_FONT_NAME", size: 30)
                hLabel.textColor = kiExtremeOrange
                hLabel.text = alphabets[section]
                hView.addSubview(hLabel)
                return hView
}

Remarque: commencez par importer la police que vous souhaitez utiliser

2
Sumit Oberoi
func tableView(tableView: UITableView, willDisplayHeaderView view: UIView, 
forSection section: Int) {
    let headerView = view as! UITableViewHeaderFooterView
    headerView.textLabel?.font = UIFont(name: "Futura", size: 14)
}
1
Prasann

Xamarin/C#

Basé sur la réponse d'Atticus en utilisant willDisplayHeaderView:

public override void WillDisplayHeaderView(UITableView tableView, UIView headerView, nint section)
{
    var header = headerView as UITableViewHeaderFooterView;
    header.TextLabel.Font = UIFont.FromName("Futura", header.TextLabel.Font.PointSize);
}

Veuillez noter que Xamarin est un outil de développement multiplate-forme permettant de créer des applications iOS à l'aide du langage C #. Le code ci-dessus est C # et ne fonctionnera pas dans Xcode. Cette réponse s’adresse uniquement aux développeurs qui utilisent Xamarin mais souhaitent tout de même obtenir ce que le PO voulait également.

0
Mark Moeykens