我如何使用Swift创建自定义警报?我尝试从Objective c翻译指南,但加载了全屏布局
为了做它容易我可以加载一个新的布局与透明的背景我尝试这样:
listaalertviewcontroller.view.backgroundColor = UIColor.clearColor()
let purple = UIColor.purpleColor() // 1.0 alpha
let semi = purple.colorWithAlphaComponent(0.5)
listaalertviewcontroller.view.backgroundColor = semi
presentingViewController.modalPresentationStyle = UIModalPresentationStyle.CurrentContext
self.presentViewController(listaalertviewcontroller, animated: true, completion: nil)
在动画中它是透明的,但当动画结束时它是不透明的...我在视图中关闭了不透明选项...我做错了什么?
5条答案
按热度按时间xmq68pz91#
如何制作自己的自定义提醒
我想做一些类似的事情。首先,
UIAlertView
被弃用,而UIAlertController
被支持。请参阅以下答案以了解显示警报的标准方式:而且
UIAlertView
和UIAlertController
都不允许进行太多的自定义。一种选择是使用一些第三方代码。然而,我发现通过显示另一个视图控制器模式来创建自己的警报并不困难。这里的例子只是一个概念验证。你可以用任何你想要的方式来设计你的提醒。
故事板
你应该有两个视图控制器。你的第二个视图控制器将是你的警报。设置类名为
AlertViewContoller
,故事板ID为alert
。(这两个名称都是我们在下面的代码中自己定义的,没有什么特别的。如果你愿意,你可以先添加代码。如果你先添加代码,实际上可能会更容易。)将根视图的背景颜色(在警报视图控制器中)设置为透明(或半透明黑色更适合警报)。添加另一个
UIView
,并将其居中放置,同时进行约束。将其用作警报背景,并在其中放置您想要的内容。对于我的示例,我添加了一个UIButton
。代码
ViewController.swift
AlertViewController.swift
别忘了接通电源插座。
您可以在背景视图中添加一个
onTouchUp
事件侦听器,以便在用户单击弹出窗口外部时关闭弹出窗口。就是这样。你现在应该可以发出任何你能想象到的警报。不需要第三方代码。
这是我制作的另一个自定义提醒。仍然很丑,但它显示了更多你可以做的事情。
其他选项
不过,有时候不需要重新发明轮子。第三方项目SDCAlertView(MIT许可证)给我留下了深刻的印象。它是用Swift编写的,但你也可以在Objective-C项目中使用它。它提供了广泛的可定制性。
qzwqbdag2#
以下是Swift 3代码。非常感谢@Suragch提供了创建自定义AlertView的绝妙方法。
ViewController.swift
AlertViewController.swift
为了让它更有趣或者在iOS中使用默认效果,你可以添加一个VisualEffectView,或者将主UIView的颜色改为深色,并将其alpha设置为70%。我更喜欢第二种方法,因为模糊效果不如alpha为70的视图平滑。
可视化效果视图的效果:
使用70 Alpha的UIView的效果:
vof42yt13#
现在,警报仅仅是一个简单的呈现视图控制器,你可以编写一个呈现视图控制器,它的行为类似于警报--也就是说,它会弹出屏幕,并使屏幕后面的内容变暗--但它是你的视图控制器,你可以自由地给予它任何你喜欢的界面。
为了让您开始,我编写了一个github project,您可以下载并运行它,并根据实际需要进行修改。
我将展示代码的关键部分,“alert”视图控制器在其初始化器中将自己的模态表示样式设置为
custom
,并设置一个转换委托:所有工作都由过渡代理完成:
它看起来像很多代码,我想也是,但它几乎完全局限于一个类,这完全是样板文件;你所要做的就是编写你的“警报”视图控制器的内部接口和行为,给它按钮和文本以及你想要的任何东西,就像你对任何其他视图控制器所做的那样。
gmol16394#
swift 4中的自定义警报UIView类和用法##
##使用选项卡栏的自定义警报。
jum4pzuy5#
使用https://github.com/shantaramk/Custom-Alert-View
实现这一点毫不费力。请遵循以下步骤:
1.向下拖动项目目录中的AlertView文件夹
1.显示警报视图弹出窗口