在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