【问题标题】:Show UIView from UIViewController as a context menu preview从 UIViewController 显示 UIView 作为上下文菜单预览
【发布时间】:2019-11-02 20:58:05
【问题描述】:

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

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

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

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

【问题讨论】:

    标签: ios swift uiview uiviewcontroller ios13


    【解决方案1】:

    我终于设法做对了,我遇到的问题是 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
    

    【讨论】:

      猜你喜欢
      • 2020-05-23
      • 2022-12-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-04-17
      • 1970-01-01
      • 1970-01-01
      • 2018-09-14
      相关资源
      最近更新 更多