【问题标题】:How can we add image in UITableView section header using swift?我们如何使用 swift 在 UITableView 部分标题中添加图像?
【发布时间】:2015-02-19 07:00:28
【问题描述】:

在我的 willDisplayHeaderView 中,我更改了部分标题的颜色但我想在部分标题之前添加一个图像。有什么帮助吗? 我的 willDisplayHeaderView 代码是

func tableView(tableView: UITableView, willDisplayHeaderView view: UIView, forSection section: Int) {
    let header: UITableViewHeaderFooterView = view as UITableViewHeaderFooterView 
    header.contentView.backgroundColor = UIColor(red: 238/255, green: 168/255, blue: 15/255, alpha: 0.8)
    header.textLabel.textColor = UIColor.whiteColor()
    header.alpha = 1
}

【问题讨论】:

    标签: ios uitableview swift


    【解决方案1】:

    您可以设计自己的标题,就像在表格视图中设计自定义单元格一样。 或者您可以像这样添加图像:

    func tableView(tableView: UITableView, viewForHeaderInSection section: Int) -> UIView? {
    
        var myCustomView: UIImageView
        var myImage: UIImage = UIImage(named: "myImageResource")
        myCustomView.image = myImage
    
        let header: UITableViewHeaderFooterView = view as UITableViewHeaderFooterView
        header.addSubview(myCustomView)
        return header
    }
    

    然后您可以简单地将您的部分标题 UILabel 添加为另一个子视图。

    【讨论】:

    • let header: UITableViewHeaderFooterView = view as UITableViewHeaderFooterView 这在这里根本行不通...
    • 我已经以编程方式添加了这个 myCustomView 但它在运行时没有显示任何图像?? @Anfaje
    • 只需将 myCustomView 初始化为 var myCustomView: UIImageView = UIimageView()。错误会消失
    【解决方案2】:

    只需在您的 viewDidLoad() 方法中添加以下代码即可。

        var frame = CGRectMake(0, 0, self.view.frame.size.width, 200)
        var headerImageView = UIImageView(frame: frame)
        var image: UIImage = UIImage(named: "yourImage")!
        headerImageView.image = image
        youTableView.tableHeaderView = headerImageView
    

    【讨论】:

      【解决方案3】:

      这是我们如何在UITableView 中添加自定义标题的方法。

      func tableView(tableView: UITableView, willDisplayHeaderView view: UIView, forSection section: Int) {
           let header: UITableViewHeaderFooterView = view as UITableViewHeaderFooterView
           let imageViewGame = UIImageView(frame: CGRectMake(5, 8, 40, 40));
           let image = UIImage(named: "Games.png");
           imageViewGame.image = image;
           header.contentView.addSubview(imageViewGame)
      }
      

      【讨论】:

        【解决方案4】:

        我在我的项目中使用下面这个方法。

        override func tableView(tableView: UITableView, viewForHeaderInSection section: Int) -> UIView? 
        {
            let uilbl = UILabel()
            //uilbl.numberOfLines = 0
            //uilbl.lineBreakMode = NSLineBreakMode.ByWordWrapping
            //uilbl.text = "blablabla"
            uilbl.sizeToFit()
            uilbl.backgroundColor =  UIColor(patternImage: UIImage(named: "yr-img-name")!)
        
            return uilbl
        }
        

        【讨论】:

          【解决方案5】:

          对于 Swift 3

            override func tableView(_ tableView: UITableView, willDisplayHeaderView view: UIView, forSection section: Int) {
              let header = view as! UITableViewHeaderFooterView
              header.textLabel?.textColor = UIColor.white
              let headerImage = UIImage(named: "headerBanner.jpg")
              let headerImageView = UIImageView(image: headerImage)
              header.backgroundView = headerImageView
          }
          

          【讨论】:

            【解决方案6】:

            这将适用于 swift 4

            override func tableView(_ tableView: UITableView, viewForHeaderInSection section: Int) -> UIView? {
                let headerImage: UIImage = UIImage(named: "image")!
                let headerView = UIImageView(image: headerImage)
                return headerView
            }
            

            【讨论】:

              【解决方案7】:

              斯威夫特 5

              override func tableView(_ tableView: UITableView, viewForHeaderInSection section: Int) -> UIView? {
                  let imageView = UIImageView();
                  let image = UIImage(named: "logo")
                  imageView.contentMode = .center
                  imageView.image = image;
                  return imageView
              }
              
                // Optionally you can set the header height here.
                override func tableView(_ tableView: UITableView, heightForHeaderInSection section: Int) -> CGFloat {
                      return 85
                  }
              

              【讨论】:

                猜你喜欢
                • 2020-03-20
                • 2015-04-20
                • 2023-03-06
                • 2014-01-14
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 2013-10-05
                相关资源
                最近更新 更多