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



我正在试用iOS 13和新的UIContextMenu API,当尝试使用上下文菜单预览时,我想显示一张相对于按下的UITableRow的小卡片。我在故事板中创建了一个UIViewController,里面有一个包含信息卡本身的UIView(我制作了UIView,这样我就可以很容易地在有限制的情况下更改它的大小(。我试着只通过来显示它

@IBOutlet var infoCard = UIView!
override func loadView(){
super.loadView()
view = infoCard
preferredContentSize = infoCard.bounds.size
}

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

如何使用其他比例显示此信息卡?非常感谢。

我终于把它做好了,我遇到的问题是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

相关内容

  • 没有找到相关文章

最新更新