Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/119.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios Swift-在Xib中动态设置UITableView高度_Ios_Swift_Uitableview_Xib - Fatal编程技术网

Ios Swift-在Xib中动态设置UITableView高度

Ios Swift-在Xib中动态设置UITableView高度,ios,swift,uitableview,xib,Ios,Swift,Uitableview,Xib,我尝试在Xib中动态设置tableView高度。但是所有元素在xib视图中都是动态变化的,我没有达到tableview之前最后一个元素的“y”位置 我尝试过类似的东西,但没有成功。它显示在mainView的顶部 techTableView = mainView?.technicalTableView self.techTableView?.frame = CGRect( x: 0, y: (self.techTableView?.topAnchor.constraint(equ

我尝试在Xib中动态设置tableView高度。但是所有元素在xib视图中都是动态变化的,我没有达到tableview之前最后一个元素的“y”位置

我尝试过类似的东西,但没有成功。它显示在mainView的顶部

techTableView = mainView?.technicalTableView

self.techTableView?.frame = CGRect(
    x: 0,
    y: (self.techTableView?.topAnchor.constraint(equalTo: (mainView?.productInformation.bottomAnchor)!, constant: 25).constant)! ,
    width: self.view.frame.size.width,
    height: 35)

您的代码似乎令人困惑,您试图通过使用锚来设置表视图框架,而这不是它的工作方式。如果目标是通过设置约束执行此操作,则应在添加表视图后执行此操作,而不考虑其框架的值

因此,在确保将
techTableView
添加到其superview(例如:
view.addSubview(tableView)
)后,您需要实现以下功能:

tableView.translatesAutoresizingMaskIntoConstraints = false

// x axis:
tableView.leadingAnchor.constraint(equalTo: view.leadingAnchor, constant: 0.0).isActive = true
// y axis:
tableView.topAnchor.constraint(equalTo: mainView?.productInformation.bottomAnchor, constant: 25.0).isActive = true
// width:
tableView.widthAnchor.constraint(equalTo: view.widthAnchor, multiplier: 1.0).isActive = true
// height:
tableView.heightAnchor.constraint(equalToConstant: 35.0).isActive = true

此时,它应按预期显示,已通过约束进行处理,无需编辑框架(默认情况下为
CGRect.zero

您的代码似乎令人困惑,您正在尝试使用锚定来设置表视图框架,而这不是它的工作方式。如果目标是通过设置约束执行此操作,则应在添加表视图后执行此操作,而不考虑其框架的值

因此,在确保将
techTableView
添加到其superview(例如:
view.addSubview(tableView)
)后,您需要实现以下功能:

tableView.translatesAutoresizingMaskIntoConstraints = false

// x axis:
tableView.leadingAnchor.constraint(equalTo: view.leadingAnchor, constant: 0.0).isActive = true
// y axis:
tableView.topAnchor.constraint(equalTo: mainView?.productInformation.bottomAnchor, constant: 25.0).isActive = true
// width:
tableView.widthAnchor.constraint(equalTo: view.widthAnchor, multiplier: 1.0).isActive = true
// height:
tableView.heightAnchor.constraint(equalToConstant: 35.0).isActive = true

此时,它应按预期显示,已由约束处理,无需编辑框架(默认情况下为
CGRect.zero
)。

使用布局定位来设置约束,而不是设置框架。可以执行以下操作来设置tableview的约束:

techTableView.translatesAutoresizingMaskIntoConstraints = false

    techTableView.leadingAnchor.constraint(equalTo: self.view.leadingAnchor).isActive = true
    techTableView.trailingAnchor.constraint(equalTo: self.view.trailingAnchor).isActive = true
    techTableView.topAnchor.constraint(equalTo: mainView.bottomAnchor).isActive = true
    techTableView.heightAnchor.constraint(equalToConstant: 35).isActive = true

使用布局定位来设置约束,而不是设置框架。可以执行以下操作来设置tableview的约束:

techTableView.translatesAutoresizingMaskIntoConstraints = false

    techTableView.leadingAnchor.constraint(equalTo: self.view.leadingAnchor).isActive = true
    techTableView.trailingAnchor.constraint(equalTo: self.view.trailingAnchor).isActive = true
    techTableView.topAnchor.constraint(equalTo: mainView.bottomAnchor).isActive = true
    techTableView.heightAnchor.constraint(equalToConstant: 35).isActive = true

是否要更改表格视图或表格视图单元格表格视图的高度。我设置了单元格高度。您不需要每次都计算单元格的大小。使用UITableViewAutomaticDimension可以自动计算单元格的大小,只需确保您提供了正确的约束是否要更改表视图或表视图的高度celltableView。我设置了单元格高度。您不需要每次都计算单元格大小。使用UITableViewAutomaticDimension可以自动计算单元格大小,只需确保您提供了正确的约束。谢谢您的advance dude。谢谢您的advance dude。