【问题标题】:Title is not visible for UIContextualAction (UITableView swipe to delete - iOS 11)UIContextualAction 的标题不可见(UITableView 滑动删除 - iOS 11)
【发布时间】:2017-10-29 18:08:43
【问题描述】:

我正在使用UIContextualActionUITableViewCell 实现滑动删除功能。我使用+ (instancetype)contextualActionWithStyle:(UIContextualActionStyle)style title:(nullable NSString *)title handler:(UIContextualActionHandler)handler 方法构造UIContextualAction,然后使用setImage: 属性为其设置图像。

但是,当我运行此代码并尝试滑动删除时,菜单中只显示图像。标题不见了。当我注释掉 setImage 属性时,会显示标题。为什么会这样?我是在实现中遗漏了什么还是这是 Apple 的错误?

【问题讨论】:

    标签: ios uitableview ios11 uitableviewrowaction


    【解决方案1】:

    UIContextualAction 支持任一文本图片。通过使用setImage: 设置图像,您基本上可以删除创建对象时设置的标题。如果您想要文本图像,则必须创建带有嵌入文本的图像。

    编辑

    我的回答是基于我自己的经验,不幸的是,该特定课程的官方文档根本没有帮助。我还发现了关于here 问题的提示(“通过指定图像,初始化程序中的标题不会显示”)。

    在您的评论中,您说如果高度 >91 像素,则会显示标题和图像。这与 radar 匹配(那里说高度应该 >=91px),所以它可能毕竟是一个错误。

    目前看来,唯一的选择是创建带有嵌入文本的图像,或者将单元格高度增加到 91 像素。

    【讨论】:

    • 但是我观察到如果UITableViewCell的高度超过91点,标题和图片都会显示出来。
    • 是的,嵌入文本似乎是目前最好的解决方案。我现在在我的代码中这样做。感谢您的反馈。
    • 但它以标题居中显示,上面的图像...糟糕的输出(iOS 11.3)
    【解决方案2】:

    作为一种解决方案,我们可以使用 UIGraphicsImageRenderer 将文本渲染为图像

    let renderer = UIGraphicsImageRenderer(bounds: bounds)
    contextAction.image = renderer.image { context in
        // draw your image and text using Core Graphics API here
    }
    

    这是一种解决方法,但 Apple 没有为我们提供另一种方法来做到这一点......

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-03-07
      • 2010-11-07
      • 1970-01-01
      • 2018-02-28
      • 1970-01-01
      • 2014-11-18
      • 2017-05-20
      • 1970-01-01
      相关资源
      最近更新 更多