UITableView Cell 不应该水平滚动 swift iOS
Posted
技术标签:
【中文标题】UITableView Cell 不应该水平滚动 swift iOS【英文标题】:UITableView Cell should not scroll horizontally swift iOS 【发布时间】:2019-06-01 10:50:33 【问题描述】:我有一个表格视图,其中有卡片类型的单元格,如图所示。 我已经设置了内容插图,以便我可以在左、右和顶部获得间距为 20px 的单元格。 tableVw.contentInset = UIEdgeInsets(top: 20, left: 20, bottom: 0, right: 20)
它的显示与我预期的一样,但问题是,单元格可以向各个方向移动。但是当我将它移到右/上时,它会自动回到原来的位置。但是当我向左移动时,它只会进入内部并且不会滚动回原始位置,如图所示。
我根本不希望单元格移动,或者如果单元格也被拖动到任何地方,我希望单元格回到中心。请帮忙!
【问题讨论】:
你在单元格中添加了 UIScrollview 吗? 没有。我在单元格内没有滚动视图 UITableview 默认提供垂直滚动,如果你想水平滚动,那么你应该添加 UISCrollview。 我要求不要滚动。现在可以向各个方向拖动单元格。但我只想让细胞粘在一个地方。用户不能拖动单元格。 请检查我的回答,它可能对你有帮助。 【参考方案1】:不要向 tableview 提供 uiedgeinsets,而是在 uitableview 单元格中添加一个覆盖整个单元格的视图,并在该视图内添加另一个 uiview 并从顶部底部前导尾随等于 8 或任何你想要的约束条件,然后单元格无论如何都不会移动并且u tableview 单元格看起来像是有边缘插入。
【讨论】:
谢谢。但我早些时候尝试过这个。我将在单元格内有一个标签,其文本将是动态的。 func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat return UITableView.automaticDimension 单元格的高度不正确 在 tableview 中,如果您有取决于标签文本的动态单元格大小,那么您可以通过约束来实现它,并且您不必实现 heightforrowatindexpath。只需给标签顶部前导尾随和底部【参考方案2】:你需要设置clipsToBounds
属性true
tableview.clipsToBounds = true
【讨论】:
【参考方案3】:如果您使用的是 AutoLayout,则设置此项仅适用于您:
在代码中:
tableView.alwaysBounceVertical = false
或在界面生成器中: 只需找到此选项并取消选中“垂直弹跳”选项即可。
这是参考:
如果您不使用自动布局:
override func viewDidLayoutSubviews()
// Enable scrolling based on content height
tableView.isScrollEnabled = tableView.contentSize.height > tableView.frame.size.height
也可以试试 clipToBounds
tableview.clipsToBounds = true
【讨论】:
【参考方案4】:我通过下面的代码实现了我想要的。
postsTable.contentInset = UIEdgeInsets(top: 20, left: 20, bottom: 0, right: -20)
在 UITableViewCell 类中:
override var frame: CGRect
get
return super.frame
set(newFrame)
var frame = newFrame
frame.size.width = kScreenWidth - 40
super.frame = frame
现在,如果我向左或向右拖动单元格,它也会回到原来的位置。
【讨论】:
以上是关于UITableView Cell 不应该水平滚动 swift iOS的主要内容,如果未能解决你的问题,请参考以下文章