在Swift中破解iOS警报
更新:添加了附件图像和附件视图🙂
大家好! 这是我的第一篇中篇文章,所以希望对此做出有趣的贡献。 😉
如果您使用过Swift和/或UIKit iOS框架,则可能曾经想过显示警报,并可能使用过UIAlertController 。 事实是,此类不是非常可定制的,您几乎不能更改其色调颜色,并且不能做更多的事情……
因此,我开始研究如何使其变暗或更改字体……但是我意识到最好的方法就是制作自己的警报 。
话虽如此……与Apple私有API或内部值:D混在一起仍然真的很酷,因此,这只是一堆Swift’hacks’,很有趣,可以使UIAlertController更可定制。
发出上述警报的代码很简单:
但是什么是DarkAlertController? 只是CustomizableAlertController的子类。
如此简单, CustomizableAlertController具有视觉效果的属性,以及一些可以轻松更改标题和消息的文本属性的属性。 (您可以在github中查看完整的实现)。
您还可以像这样轻松更改警报背景:
alert.contentView?.backgroundColor = .red
如何设置标题和消息文本属性?
只需使用KVC更改属性即可:
警报。 setValue (newValue,forKey:“ attributedTitle ”)
警报。
setValue (newValue,forKey:“ attributedMessage ”)
警报动作归因于文本? 有点棘手; 您首先需要标签,然后使用attributedText属性:
var标签:UILabel? {
回报(自我。
值 ( forKey :“ __representer ”)为? NSObject)?
。
值 ( forKey :“ label ”)为? UILabel
}
以及如何获得视觉效果视图? 只需对警报视图的所有子视图进行深度递归搜索。
您可以在github项目中找到更多信息和完整代码:
illescasDaniel / CustomizableAlertController
CustomizableAlertController –入侵UIAlertController以完全对其进行自定义
github.com
我有义务建议您不要在生产代码中使用这种小技巧……为什么? 因为Apple可以随时更改它,因此它可能对您不起作用,或者在其他iOS版本中效果不佳。
如果您要自定义警报,请等到Apple打开比API多一点的东西(可能永远不会发生😂),或者只是构建如下的自定义警报:
通过子类化UIViewController并使用情节提要:
设计和编写自己的UIAlertView
AlertViews是在iOS中向用户显示消息的常用方法。 此视图可让用户了解严重…
medium.com
通过子类化UIView :
如何在Swift 3中使用动画制作自定义AlertView / DialogBox
尽管我们有UIAlertViewController来显示警报,但是我们没有足够的灵活性来进行自定义。 所以…
medium.com
在Github上也有很多很酷的项目可以发出警报:
KyoheiG3 / SimpleAlert
SimpleAlert –可自定义的Swift的简单Alert和ActionSheet
github.com
jjessel / JHTAlertController
JHTAlertController –一个自定义iOS警报,它替换了库存的UIAlertController。 轻松设置警报样式以匹配您的…
github.com
okmr-d / DOAlertController
DOAlertController –用Swift编写的简单警报视图,可用作UIAlertController。 (AlertController…
github.com
将文本属性添加到UIAlertController:https://stackoverflow.com/questions/26460706/
UIAlertController:https://developer.apple.com/documentation/uikit/uialertcontroller
UIAlertController的一些自定义:https://medium.com/@maximbilan/ios-uialertcontroller-customization-5cfd88140db8