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的主要内容,如果未能解决你的问题,请参考以下文章

拦截 UITableView 滚动触摸

具有共享滚动手势的嵌套 UITableView

如何使 UITableView 水平和垂直滚动

UITableView 有 UIScrollView in Cell 无法在 ios 模拟器 8.3 中滚动

UITableView - 在编辑模式下重用单元格

UItableview Cell 随机或在滚动时更改数据和属性