Ios UITableview在使用TranslatesAutoResizengMaskinToConstraints=false时停止响应
我想在代码中添加一个包含tableview的视图。 我在故事板中定义视图,如图所示。 在我的视图控制器中,我使用以下代码设置位置和大小Ios UITableview在使用TranslatesAutoResizengMaskinToConstraints=false时停止响应,ios,uitableview,swift3,Ios,Uitableview,Swift3,我想在代码中添加一个包含tableview的视图。 我在故事板中定义视图,如图所示。 在我的视图控制器中,我使用以下代码设置位置和大小 override func viewDidLoad() { super.viewDidLoad() // bunch of non-related code timeTableView.delegate = self timeTableView.dataSource = self timeTableView.rowH
override func viewDidLoad() {
super.viewDidLoad()
// bunch of non-related code
timeTableView.delegate = self
timeTableView.dataSource = self
timeTableView.rowHeight = UITableViewAutomaticDimension
timeTableView.estimatedRowHeight = 32
timeChooser.translatesAutoresizingMaskIntoConstraints=false
}
@IBAction func onTimeLabelPressed(_ sender: AnyObject){
view.addSubview(timeChooser)
let topConstraint = timeChooser.topAnchor.constraint(equalTo: viewdayTime.bottomAnchor)
let leftConstraint = timeChooser.leftAnchor.constraint(equalTo: viewdayTime.leftAnchor)
//let heightConstraint = timeChooser.heightAnchor.constraint(greaterThanOrEqualToConstant: 128)
//let widthConstraint = timeChooser.widthAnchor.constraint(lessThanOrEqualTo: viewdayTime.widthAnchor)
NSLayoutConstraint.activate([topConstraint,leftConstraint, /*heightConstraint, widthconstraint*/])
view.layoutIfNeeded()
timeChooser.alpha=0
UIView.animate(withDuration: 0.2){
self.timeChooser.alpha=1.0}
}
onTimeLabelPressed函数使视图显示在标签下方,并与标签左对齐
问题是tableview不会滚动或以其他方式响应,只要行
timeChooser.TranslatesAutoResizezingMaskintoConstraints=false
他在场。删除它会打破定位约束,但tableview的行为正常
有人有什么想法吗?没有找到任何描述我亲眼目睹的行为的问题。您需要给
时间选择器设置限制,以确定其宽度和高度。最好设置右侧
和底部
约束
let rightConstraint = timeChooser.rightAnchor.constraint(equalTo: view.rightAnchor)
let bottomConstraint = timeChooser.bottomAnchor.constraint(equalTo: view.bottomAnchor)
我确实使用了高度和宽度约束,在代码示例中注释掉了这些约束,但它们没有任何区别。不过,我会试试你的建议。你最好使用右侧和底部约束,让屏幕大小确定宽度和高度。您的约束中包含小于和大于,这使系统可以自由选择不适合您的内容,例如0。右侧和底部约束适用于高度和宽度不适用的情况。奇怪的是,一定是自动布局在TableView中的工作方式有问题。我必须修正这一点:高度和宽度约束可以使用,但我忘了设置UITableview相对于其superview时间选择器的约束。这导致响应区域小于显示的文本。