UITableView Cell不应水平快速滚动iOS

时间:2019-06-01 10:50:33

标签: ios swift uitableview uiscrollview

我有一个表格视图,其中具有卡片类型的单元格,如图所示。 我已经设置了内容插图,这样我就可以在左,右和顶部获得20px间距的单元格。 enter image description here     tableVw.contentInset = UIEdgeInsets(顶部:20,左侧:20,底部:0,右侧:20)

它按预期显示,但问题是,单元可以向各个方向移动。但是,当我将其移至右侧/顶部时,它会自动返回到原始位置。但是,当我向左移动时,它就进入了内部,并且没有如图所示滚动回到原始位置。 enter image description here

我不希望这些单元格完全移动,或者如果它们也拖动到任何位置,我希望这些单元格回到中心位置。请帮忙!

4 个答案:

答案 0 :(得分:0)

不提供uiedgeinsets到tableview,而是在uitableview单元格中添加一个覆盖整个单元格的视图,并在该视图中添加另一个uiview,并给出顶部底部前导尾随等于8或任何您想要的约束,然后该单元格无论如何都不会移动,并且您的tableview单元格看起来将具有edgeinsets。

答案 1 :(得分:0)

如果您使用的是自动版式,则只需设置此项即可为您工作:

在代码中:

tableView.alwaysBounceVertical = false

或在Interface Builder中: 只需找到此选项,然后取消选中“垂直反弹”选项即可。

这里是参考:

enter image description here

如果您不使用自动版式:

override func viewDidLayoutSubviews() {
    // Enable scrolling based on content height
    tableView.isScrollEnabled = tableView.contentSize.height > tableView.frame.size.height
 }

,然后尝试clipToBounds

tableview.clipsToBounds = true

答案 2 :(得分:0)

您需要设置clipsToBounds属性true

tableview.clipsToBounds = true

答案 3 :(得分:0)

我通过下面的代码实现了我想要的。

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
    }
}

现在,如果我向左或向右拖动单元格,它也会恢复到原始位置。