将UIViewController中的UIView显示为上下文菜单预览

时间:2019-11-02 20:58:05

标签: ios swift uiview uiviewcontroller ios13

我正在尝试使用iOS 13和新的UIContextMenu API,并且在尝试使用上下文菜单预览时,我想显示一个相对于所按下的UITableRow的小卡片。我在情节提要中创建了一个UIViewController,其中包含一个信息卡本身的UIView(我制作了UIView以便可以轻松地通过约束来更改其大小)。我尝试只通过显示来显示它

Class

但是,当显示上下文菜单时,我看到了视图,但是卡的上方和下方都有黑色矩形,因为预览的比例没有改变。

如何以其他比例显示此信息卡?谢谢!

1 个答案:

答案 0 :(得分:0)

我终于设法弄对了,我遇到的问题是infoCard.bounds将返回故事板值,但是我的视图具有动态大小,Swift不会尝试重新计算可见的高度/宽度,直到框架被画。这是在上下文菜单预览中显示UIViewController时呈现UIViewController内部的UIView的代码:

// All this is inside the view controller, with cardView being the displayed view
loadViewIfNeeded()
updateViewConstraints()

// This will force Swift to recalculate the view's size
cardView.drawHierarchy(in: cardView.bounds, afterScreenUpdates: true)

view = cardView
preferredContentSize = cardView.bounds.size