Ios UITableView中的UIView正在自动更改帧
我已将此Ios UITableView中的UIView正在自动更改帧,ios,swift,uitableview,uiview,cgrect,Ios,Swift,Uitableview,Uiview,Cgrect,我已将此UIView添加到我的UITableView: self.tableView.addSubview(viewInfoPlus) self.viewInfoPlus.frame = CGRect.init(x: kWidth - 193 - 32, y: 751, width: 193, height: 103) 那个人用红色箭头示意 屏幕截图中的UIView具有正确的帧,但当我尝试重新加载UITableView或仅使用以下单元格时: let indexPath = IndexPath
UIView
添加到我的UITableView
:
self.tableView.addSubview(viewInfoPlus)
self.viewInfoPlus.frame = CGRect.init(x: kWidth - 193 - 32, y: 751, width: 193, height: 103)
那个人用红色箭头示意
屏幕截图中的UIView具有正确的帧,但当我尝试重新加载UITableView或仅使用以下单元格时:
let indexPath = IndexPath.init(row: 0, section: TableSection.plus.rawValue)
UIView.setAnimationsEnabled(false)
self.tableView.beginUpdates()
tableView.reloadRows(at: [indexPath], with: .none)
self.tableView.endUpdates()
UIView.setAnimationsEnabled(true)
ui视图
会自动将帧更改为错误的帧,如您在此屏幕截图中所示。
但是当用户滚动到UITableVIew
的顶部时,UIView
会再次自动将其帧更改为右侧帧。
显然,我从未改变代码中的框架
使用约束而不是框架 设置框架调整大小时无法保证。Autolayout允许根据不同的大小类别和位置动态调整视图。检查下面的示例 示例:
viewInfoPlus.translatesAutoresizingMaskIntoConstraints = false
viewInfoPlus.leftAnchor.constraint(equalTo: view.leftAnchor, constant: 20).isActive = true
viewInfoPlus.rightAnchor.constraint(equalTo: view.rightAnchor, constant: 20).isActive = true
viewInfoPlus.centerYAnchor.constraint(equalTo: view.centerYAnchor).isActive = true
viewInfoPlus.heightAnchor.constraint(equalToConstant: 103).isActive = true
使用约束而不是框架 设置框架调整大小时无法保证。Autolayout允许根据不同的大小类别和位置动态调整视图。检查下面的示例 示例:
viewInfoPlus.translatesAutoresizingMaskIntoConstraints = false
viewInfoPlus.leftAnchor.constraint(equalTo: view.leftAnchor, constant: 20).isActive = true
viewInfoPlus.rightAnchor.constraint(equalTo: view.rightAnchor, constant: 20).isActive = true
viewInfoPlus.centerYAnchor.constraint(equalTo: view.centerYAnchor).isActive = true
viewInfoPlus.heightAnchor.constraint(equalToConstant: 103).isActive = true
我不确定我是否完全理解这个问题。。但是我猜你希望弹出视图遵循第一个屏幕截图中显示的0欧元?如果是这种情况,那么我认为您应该将子视图(viewInfoPlus)添加到viewcell而不是tableview。但是更多关于如何检查viewcontroller的信息会有所帮助(比如,如果这些卡本身就是单元格),是的,这是正确的。如果我将视图添加到viewcell,它可以完全显示。。。它将被裁剪你是否尝试将单元格clipToBounds设置为false?我不确定我是否完全理解这个问题。。但是我猜你希望弹出视图遵循第一个屏幕截图中显示的0欧元?如果是这种情况,那么我认为您应该将子视图(viewInfoPlus)添加到viewcell而不是tableview。但是更多关于如何检查viewcontroller的信息会有所帮助(比如,如果这些卡本身就是单元格),是的,这是正确的。如果我将视图添加到viewcell,它可以完全显示。。。它将被裁剪你是否尝试将单元格clipToBounds设置为false?