带有白色边框的警报控制器

Posted

技术标签:

【中文标题】带有白色边框的警报控制器【英文标题】:alertController with white borders 【发布时间】:2017-06-23 10:33:10 【问题描述】:

我创建了一个带有操作表和两个按钮的警报控制器。由于操作表将具有圆形边缘,因此在屏幕上的四个角上会出现白色。我尝试更改警报控制器的背景颜色,但这会使操作表变成带有锐利边框而不是圆角边框的矩形。我尝试将视图背景颜色设置为清除颜色 也尝试设置边界半径。 这是我的行动表。我希望那些白色边缘不可见。

还有,如何更改取消的背景颜色。

let cancelAction = UIAlertAction(title: "Cancel".localize(), style: .cancel)  _ in
    // this is where I am creating the cancelAction

编辑 - 1:为警报控制器添加代码

func showActionSheet(_ changeAction: UIAlertAction) 
    let alertController = UIAlertController(title: "", message: "Here is my alert text".localize(), preferredStyle: .actionSheet)

    alertController.view.tintColor = StyleKit.goldenColor
    let attributedString = NSAttributedString(string: alertController.message!, attributes: [
        NSForegroundColorAttributeName : StyleKit.whiteColor
        ])
    alertController.setValue(attributedString, forKey: "attributedMessage")
    if let subview = alertController.view.subviews.first, let alertContentView = subview.subviews.first 
        for innerView in alertContentView.subviews 
            innerView.backgroundColor = StyleKit.popoverDefaultBackgroundColor

        

    
    let cancelAction = UIAlertAction(title: "Cancel".localize(), style: .cancel)  _ in
        self.doneButton.isEnabled = true
    

    alertController.addAction(changeAction)
    alertController.addAction(cancelAction)
    self.present(alertController, animated: true)

【问题讨论】:

为您编写的 alertController 添加代码。 请检查我的编辑@iosDev 【参考方案1】:

这里是UIAlertActionactionSheet这个白边的解决方法

let actionSheet = UIAlertController.init(title: nil, message: nil, preferredStyle: .actionSheet)

if let subview = actionSheet.view.subviews.first, let actionSheet = subview.subviews.first 
    for innerView in actionSheet.subviews 
        innerView.backgroundColor = .purple
        innerView.layer.cornerRadius = 15.0
        innerView.clipsToBounds = true
    


actionSheet.addAction(UIAlertAction.init(title: "Take Photo", style: UIAlertActionStyle.default, handler:  (action) in

))
actionSheet.addAction(UIAlertAction.init(title: "Choose Photo", style: UIAlertActionStyle.default, handler:  (action) in

))
actionSheet.addAction(UIAlertAction.init(title: "Cancel", style: UIAlertActionStyle.cancel, handler:  (action) in
))

actionSheet.view.tintColor = .orange

self.present(actionSheet, animated: true, completion: nil)

用十六进制颜色更新

Github:https://github.com/BhaveshDhaduk/AlertControllerSwift

【讨论】:

两者都将改变背景颜色(你给出的紫色)。修复不起作用,因为最后一个和第一个都在更改“拍照并选择照片”的背景颜色。不是边界线。这是我一直在使用的颜色。 UIColor(十六进制:“0D324E”) 这对我有用,首先是唯一的部分:innerView.layer.cornerRadius = 15.0 只需更改操作表的收音机,同时检查这个我会检查你提供的 hax 颜色。 我不知道为什么这个修复在我的代码中不起作用。但是你的代码是完美的。我用其他样品试了一下。您知道如何更改取消按钮的背景颜色吗?

以上是关于带有白色边框的警报控制器的主要内容,如果未能解决你的问题,请参考以下文章

生成带有白色边框的缩略图

通过 gldrawarrays 和 GL_POINTS 溺水时得到带有白色边框的点

带有视图控制器的 Xcode 和 alertview

呈现警报控制器时 UIPopOverController 缩小

在所有视图控制器中创建警报功能 - swift

不同控制器中的导航栏样式不同?