iOS:UITableViewCell内的UITableView,具有动态单元格高度

时间:2017-02-07 04:43:15

标签: ios iphone swift

我想根据内部UITableView内容大小,在UITableViewCell内部实现UITableView动态高度的单元格。我该如何实施这个建议呢? 我希望布局像这样......

代码工作:

func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat { 
    let identifier = "OrderHistoryTVCell" let cell: OrderHistoryTVCell! = tableView.dequeueReusableCell(withIdentifier: identifier) as? OrderHistoryTVCell 
    let tableInnerContentSize = cell.tableInner.contentSize.height 
    let nn = cell.viewAfterTable.frame.height+tableInnerContentSize 
    return nn 
} 

enter image description here

4 个答案:

答案 0 :(得分:0)

使用以下内容:

@IBOutlet weak var tableView: UITableView! //connect the table view

//do following in viewDidLoad method
tableView.estimatedRowHeight = 100 //Your estimated height
tableView.rowHeight = UITableViewAutomaticDimension

还可以从故事板的“属性”检查器部分设置UILable的这两个属性:

  • 行至0
  • 换行换行

或者您也可以从代码中设置这些属性:

self.lblxyz.numberOfLines = 0
self.lblxyz.lineBreakMode = .byWordWrapping

注意 - 在表格视图单元格中正确添加约束。

答案 1 :(得分:0)

你必须做这样的事情:

  1. 在ui Master-Item #中是您的部分标题。因此,请将UILabel添加为节标题。

  2. 您的子项目是包含一个标签的prtotype-cell单元格。

  3. 单元格内标签的约束。

    • 在您的cell首先添加UIView,其中包含以下约束:
      1. 上方,下方,领先,下方为superView 0
    • 现在添加标签并给出如下约束。
      1. 上方,下方,领先,下方为UIView 8
      2. 根据您的要求给予身高限制。
      3. =>=提供身高关系。
      4. 从故事板中将label属性行设置为0.

    中实施这一行
    //MARK:- TableView
    
    public func tableView(_ tableView: UITableView, heightForHeaderInSection section: Int) -> CGFloat{
        return 60 // return header height
    }
    
    public func tableView(_ tableView: UITableView, viewForHeaderInSection section: Int) -> UIView? {
    
        // return your section header i.e. master item label
    
    }
    
    public func tableView(_ tableView: UITableView, estimatedHeightForRowAt indexPath: IndexPath) -> CGFloat{
        return 50;
    }
    
    public func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat{
        return UITableViewAutomaticDimension
    }
    
    public func numberOfSections(in tableView: UITableView) -> Int{
    // return number of section i.e. total count of master item.
    }
    
    public func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int{
    // returns number of cells in each section
    }
    
    public func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell{
        // return your custom cell here
        //eg:
        // cell.labelFood.text = your data
    }
    

    注意请勿忘记绑定tableView的delegatedataSource

答案 2 :(得分:-1)

在viewDidLoad()

中使用此代码
editext.setOnFocusChangeListener(new View.OnFocusChangeListener() {
                @Override
                public void onFocusChange(View v, boolean hasFocus) {
                    if (hasFocus) {

                        }
                    } else {

                    }
                }
            });

使用此代表

self.tableView.estimatedRowHeight = 350
 self.tableView.rowHeight = UITableViewAutomaticDimension

答案 3 :(得分:-2)

func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat
  {
        self.tableView.estimatedRowHeight = 160
        return UITableViewAutomaticDimension
  }

同时设置UILable的这两个属性。

 @IBOutlet weak var label: UILabel!
  1. label.numberOfLines = 0