有没有办法在iOS11中指定UIContextualAction的宽度?

时间:2017-09-26 16:49:08

标签: swift uitableview ios11

在UITableViewRowAction中,可以通过更改标题和放入空格来操纵动作的宽度。您使用的空间越多,您的动作占据行的区域就越宽。

使用新的UIContextualAction,在标题中放置空格并不做任何事情。操作系统确定操作的确切空间。我需要显示5种不同的动作选项,在较小的设备上,我再也无法适应5.是否有人知道如何控制视图中每个区域的大小?

func setupAction(_ indexVar: Int) -> UIContextualAction {
    let editAction = UIContextualAction(style: .normal, title:  "   ", handler: { (ac:UIContextualAction, view:UIView, success:(Bool) -> Void) in
        //do something
        success(true)
    })
    editAction.image = UIImage(named: "TestImage")
    editAction.backgroundColor = .red

    return editAction
}

2 个答案:

答案 0 :(得分:3)

在iOS11中似乎只接受特定尺寸的图像或仅用于textviewcell滑动的文字。

另一个选项(我不推荐)是向tableview添加手势。

或者向tableviewcell添加手势;比如,最初在自定义单元格中创建一个视图,并将PanGestureRecognizer应用于单元格中的此视图。添加自定义单元格所需的按钮,当您在自定义单元格中滑动视图时,自定义单元格中的按钮将可见。

答案 1 :(得分:0)

tldr :现在就使用任何现有的框架,或者自己创建。

我已经在iOS 11上处理这个问题了好几天了。我能得到的最好结果是通过programmaticaly在图像底部添加透明空间,使其填满行的整个高度。通过此操作,并将 clipsToBounds 设置为单元格,标题位于单元格视图之外且不可见,我可以使用任何字符来增加操作按钮的宽度,例如“XXXXX”字符串。 / p>

但是有些情况下标题仍然可见,即使我设置了clipsToBounds。为了最小化它的可见性,我在边缘设置了空格和点,如“。(空格)(空格)(空格)。”

最后,由于标题(由点和空格组成)仍然可见,我最终在tableViewCell中创建了自己的动作按钮。