【问题标题】:How to add an image in between the texts in a alert view?如何在警报视图中的文本之间添加图像?
【发布时间】:2016-06-10 06:16:46
【问题描述】:

我有一个警报视图,我需要在警报视图的文本之间显示一个图标,如下图所示。将视频文件异步上传到我的应用程序中的服务器后,会出现此警报。任何建议如何做到这一点。

我正在使用 Swift 2.2 xcode 7.3

【问题讨论】:

标签: ios swift uialertview


【解决方案1】:

如果此图像是表情符号或 Unicode 字符,您可以直接将其添加到 UIAlertViewController 的文本中。不要使用UIAlertView,因为它已被弃用。

但是,为了更好的可定制性,我建议创建一个自定义视图,并在必须显示时将其添加到带有背景叠加层的 VC 中

如果您希望创建自定义警报,这里有几个开源示例

Open source Custom Alerts

如果你想使用 UIAlertController ,这个链接有很好的例子

UIAlertController examples

【讨论】:

  • 不,这不是 unicode 字符。我的资产中有这张图片。您能否分享一个代码 sn-p,说明如何在后台进程完成时显示 UIalertViewControllerCustomView 以像警报一样显示。
  • 同样对于后台进程,你应该有某种被称为完成闭包
  • 是的,在完成关闭中,我正在显示此警报,而不考虑用户当前正在查看的 Viewcontroller
【解决方案2】:

为什么不创建自定义视图并将其用作警报?

let storyboard = UIStoryboard(name: "Main", bundle: nil)
let myAlert = storyboard.instantiateViewControllerWithIdentifier("alert")
myAlert.modalPresentationStyle = UIModalPresentationStyle.OverCurrentContext
myAlert.modalTransitionStyle = UIModalTransitionStyle.CrossDissolve
self.presentViewController(myAlert, animated: true, completion: nil)

在那里你可以做任何你喜欢的事情。

就表情符号而言,您可以从以下位置添加它们:-

Xcode Edit ->  Emoji & Symbols

有很多可供选择! ????

【讨论】:

  • 感谢您的提示。但该图像不在表情符号表中。这是我的资产中的自定义图像。
  • @KauthamMurugan 那么你可以试试我的第一个选项
  • 但问题是这个警报是在我在全局类中编写的后台上传过程的完成块触发的。所以我不知道用户将在哪个 ViewController 中。
【解决方案3】:

我通过创建一个自定义视图控制器解决了这个问题,我在中心放置了一个UIView,其尺寸类似于警报框,并将其约束设置为centre horizontallycentre verticallyfixed widthfixed height .在里面我放置了一个label,其中包含文本和图像必须所在位置之间的长空格。然后我在这个间隙中正确放置一个带有图像的image view。 视图的圆角半径设置为13px 和背景颜色以匹配警报框样式。

然后按照@Sushree 的回答建议,设置演示样式。但是以编程方式设置它对我不起作用。但是,正如我检查的那样,将其设置在 StoryBoard 中适用于所有 IOS 版本(8.0 到 9.3)。

选择UIViewController->Attributes inspector->Presentation->Over Current Context

我使用UINavigationController 作为RootViewController 所以我使用了以下代码

if let wd = appDelegate.window {
                var vc = wd.rootViewController
                if(vc is UINavigationController){
                    vc = (vc as! UINavigationController).visibleViewController
                    vc!.presentViewController(PopupViewController, animated: false, completion: nil)
                }
            }

参考answer

【讨论】:

    【解决方案4】:

    来自 Apple 的 this documentation,您可以使用您想使用的 unicode 标量。

    Unicode 标量

    在幕后,Swift 的原生 String 类型是从 Unicode 构建的 标量值。 Unicode 标量是一个唯一的 21 位数字 字符或修饰符,例如 U+0061 表示拉丁小写字母 A(“a”), 或 U+1F425 表示正面小鸡(“?”)。

    另外,this answer 也很有帮助。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-04-05
      • 1970-01-01
      • 2014-03-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多