簡體   English   中英

存在時如何更改節的標題標簽文本對齊方式

[英]How to change the Title label text alignment of the section when it was present

我正在用兩個部分加載UITableView ,並使用viewForHeaderInSection方法設置每個部分的標題。 最初,我將title label文本對齊方式設置為.left 現在,當我滾動表格視圖並顯示第二部分時,我想將title label文本對齊方式更改為.center 當我向下滾動表格視圖時,我想顯示為初始名稱(例如第二部分的文本對齊方式為.left )。 我怎樣才能做到這一點?

這是我用來加載該部分的TableView Delegate方法。

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

            let headerLabel:UILabel = UILabel(frame: CGRect(x: 0, y: 0, width: tableView.bounds.width, height: 20))

    headerLabel.textColor = UIColor.white
    headerLabel.textAlignment = .left
    headerLabel.font = Fonts.kFontWith_14

        if section == 0
        {
            headerLabel.text = NSLocalizedString("Suggested", comment: "")
            headerLabel.backgroundColor = Colors.kAppBgColor
            headerLabel.textAlignment = .left
        }
        else{
            headerLabel.text = NSLocalizedString("Contacts", comment: "")
            headerLabel.backgroundColor = Colors.kLightBlueColor
            headerLabel.textAlignment = .left

        }
    headerLabel.sizeToFit()
    return headerLabel

}

對全局變量取一個bool值,滾動發生時,以下代表將答復您

var isDirection = Bool()

func scrollViewWillEndDragging(_ scrollView: UIScrollView, withVelocity velocity: CGPoint, targetContentOffset: UnsafeMutablePointer<CGPoint>) {
    if velocity.y > 0 {
        print("up")
        isDirection = true
    }
    if velocity.y < 0 {
        print("down")
       isDirection = false
    }
}

Then write a condition in respective `tableview` delegate

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

            let headerLabel:UILabel = UILabel(frame: CGRect(x: 0, y: 0, width: tableView.bounds.width, height: 20))

    headerLabel.textColor = UIColor.white
    headerLabel.textAlignment = .left
    headerLabel.font = Fonts.kFontWith_14

        if section == 0
        {
            headerLabel.text = NSLocalizedString("Suggested", comment: "")
            headerLabel.backgroundColor = Colors.kAppBgColor
        }
        else{
            headerLabel.text = NSLocalizedString("Contacts", comment: "")
            headerLabel.backgroundColor = Colors.kLightBlueColor

        }
      if isDirection{
                   headerLabel.textAlignment = .left
       }else{
                   headerLabel.textAlignment = .center
       }


    return headerLabel

}

去掉

headerLabel.sizeToFit()

這是示例,您可以根據滾動方向啟用bool變量。 如果委托未調用,請在scrollViewWillEndDragging上重新加載表

這是解決我的問題的方法全局獲取一個bool值和一個CGPoint並將UITableView.ContentOffset值分配給viewDidload方法中的defaultOffset

var isScroll:Bool = Bool()
var defaultOffSet = CGPoint()

override func viewDidLoad() {
    super.viewDidLoad()
defaultOffSet = tableView.contentOffset
}

我已經使用了這個scrollView委托方法

func scrollViewDidScroll(_ scrollView: UIScrollView) {

    if  contactsTableView.rectForHeader(inSection: 1).origin.y > contactsTableView.contentOffset.y-defaultOffSet.y {
        isScrolled = false
    }
    else if tableView.rectForHeader(inSection: 0).origin.y <= tableView.contentOffset.y-defaultOffSet.y{
        isScrolled = true
    }
        tableView.reloadData()
  }

在我的tableview viewForHeaderInSection

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

     let headerLabel:UILabel = UILabel(frame: CGRect(x: 0, y: 0, width: tableView.bounds.width, height: 20))

    headerLabel.textColor = UIColor.white
    headerLabel.textAlignment = .left
    headerLabel.font = Fonts.kFontWith_14

        if section == 0
        {
            headerLabel.text = NSLocalizedString("Suggested", comment: "")
            headerLabel.backgroundColor = Colors.kAppBgColor
            headerLabel.textAlignment = .left
        }
        else{
            headerLabel.text = NSLocalizedString("Contacts", comment: "")
            headerLabel.backgroundColor = Colors.kLightBlueColor

            if isScrolled{
            headerLabel.textAlignment = .center
            headerLabel.backgroundColor = Colors.kAppBgColor

            }
        }
    }

}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM