8wDlpd.png
8wDFp9.png
8wDEOx.png
8wDMfH.png
8wDKte.png

UIAlertController 的外观

Deltag0ny 3月前

134 0

我想使用外观来设计应用程序中 AlertController 的外观。它适用于背景和按钮,但无论我尝试什么,标题和消息的标签始终保持不变...

我想使用外观来设计应用程序中 AlertController 的外观。它适用于背景和按钮,但无论我尝试什么,标题和消息的标签始终保持黑色。

以下是我正在做的事情:

UIView.appearance(whenContainedInInstancesOf: [UIAlertController.self]).tintColor = .orange
UIVisualEffectView.appearance(whenContainedInInstancesOf: [UIAlertController.self]).effect = UIBlurEffect(style: .dark)
UILabel.appearance(whenContainedInInstancesOf: [UIAlertController.self]).textColor = .white

这是我得到的结果:

enter image description here

有什么想法,我该如何设置标题和消息的颜色,或者为什么在这种情况下更改 UILabel 的外观不起作用?

帖子版权声明 1、本帖标题:UIAlertController 的外观
    本站网址:http://xjnalaquan.com/
2、本网站的资源部分来源于网络,如有侵权,请联系站长进行删除处理。
3、会员发帖仅代表会员个人观点,并不代表本站赞同其观点和对其真实性负责。
4、本站一律禁止以任何方式发布或转载任何违法的相关信息,访客发现请向站长举报
5、站长邮箱:yeweds@126.com 除非注明,本帖由Deltag0ny在本站《swift》版块原创发布, 转载请注明出处!
最新回复 (0)
  • 我需要将标题附加到 URLSessionWebSocketTask,我使用 URLRequest 完成了此操作,但不知道这是否是正确的方法,因为我使用的是 WSS 连接而不是 HTTP.var webSocketTask:

    我需要将标题附加到 URLSessionWebSocketTask,我使用 URLRequest 完成了此操作,但不知道这是否是正确的方法,因为我使用的是 WSS 连接而不是 HTTP。

    var webSocketTask: URLSessionWebSocketTask!
        
        lazy var urlSession = URLSession(configuration: .default, delegate: self, delegateQueue: OperationQueue())
    
    private var urlRequest: URLRequest = {
            var request = URLRequest(url: ApiUrl.socket.url)
            request.allHTTPHeaderFields = [
                "login" : "****",
                "passcode" : "****",
                "host" : "/",
                "accept-version" : "****"
            ]
            return request
        }()
    
    public override init() {
            super.init()
            webSocketTask = urlSession.webSocketTask(with: urlRequest)
        }
    

    另外我需要订阅事件,但无法得到我需要做的事情。您可以在下面看到屏幕截图。

    socket

  • 最简单的方法就是:不要。

    您完全没有必要局限于使用 UIAlertController 及其简单的默认视图外观和内容。毕竟,它只不过是一个呈现的视图控制器。这意味着可以编写自己的呈现视图控制器,其外观和行为几乎与 UIAlertController 及其视图一样,只不过现在您可以完全掌控其内容!

    编写自己的类似警报的呈现视图控制器比尝试入侵 UIAlertController 的视图要好得多、更容易、更可靠;前者完全合法,而后者除了不可靠之外,还会导致您的应用被 App Store 禁止。

  • 我知道,我可以这样做。愚蠢的问题,但更改视图的外观属性应该是合法的,不是吗?我认为只有私有 API 的使用是被禁止的,或者你认为即使上述更改也可以被视为苹果禁止该应用程序的理由?

  • 您可以尝试一下这个代码吗?

    class WebSocketManager: NSObject, URLSessionWebSocketDelegate {
        
        private var webSocketTask: URLSessionWebSocketTask!
        
        private lazy var urlSession: URLSession = {
            let configuration = URLSessionConfiguration.default
            return URLSession(configuration: configuration, delegate: self, delegateQueue: OperationQueue())
        }()
        
        private var urlRequest: URLRequest {
            var request = URLRequest(url: ApiUrl.socket.url)
            request.allHTTPHeaderFields = [
                "login" : "****",
                "passcode" : "****",
                "host" : "/",
                "accept-version" : "****"
            ]
            return request
        }
        
        override init() {
            super.init()
            webSocketTask = urlSession.webSocketTask(with: urlRequest)
        }
        
        func connect() {
            webSocketTask.resume()
            
        }
        
    }
    

    您需要对您的问题进行更多调试。

    extension WebSocketManager {
        
        func send(message: String) {
            let message = URLSessionWebSocketTask.Message.string(message)
            webSocketTask.send(message) { error in
                if let error = error {
                    print("WebSocket sending error: \(error)")
                }
            }
        }
        
        func receive() {
            webSocketTask.receive { [weak self] result in
                switch result {
                case .failure(let error):
                    print("WebSocket receiving error: \(error)")
                case .success(let message):
                    switch message {
                    case .string(let text):
                        print("Received text: \(text)")
                    case .data(let data):
                        print("Received data: \(data)")
                    @unknown default:
                        fatalError()
                    }
                    
                    
                    self?.receive()
                }
            }
        }
        
        func disconnect() {
            webSocketTask.cancel(with: .goingAway, reason: nil)
        }
    }
    
  • 我不能代表苹果说话。你做这件事遇到困难,说明你不应该这么做。你在与框架抗争,所以框架也在反击。有一个简单的方法。门是开着的,为什么要撞墙呢?

  • 我通常不知道订阅操作是什么以及如何使用 URLSessionWebSocket 执行此操作,我最近打开了 StompClientLib 来执行此操作,但遇到了一些问题,例如它无法 ping 并且不支持 spm。如果您能告诉我需要挖掘的路径,我将非常高兴。提前谢谢!

  • 我使用 Django Rest Framework 作为后端,使用 React 作为前端,它们服务于不同的域和子域,现在我完全搞不清楚应该怎么做才能保护我的...

    我使用 Django Rest Framework 作为后端,使用 React 作为前端,它们在不同的域和子域中提供服务,现在我完全搞不清楚应该怎么做才能保护我的 API 免受 XSS 和 CSRF 攻击。我希望对应用程序使用 simple-JWT,但我的研究表明它容易受到 XSS 攻击。如果我将它们存储在 http-only cookies 中,它们就无法在前端访问以将它们添加到授权标头中,这就像使用会话一样。我该怎么办?保护 API 的最佳实践是什么?

    我也使用了 dj-rest-auth 包,但它有点棘手,如果有人使用这个模块,很高兴听到他们的经验。我很高兴听到您的建议。

  • 首先你需要找到代码中的问题所在。如果你像我一样添加代码,那么添加更多成功和错误案例会对你有所帮助。

  • 引用 10

    但是我没有收到任何响应,我需要订阅 RabbitMQ websocket,如上面的屏幕截图所示。因此,我无法从套接字获得任何响应。

  • 你知道我没有得到答案而且我变得更加困惑,我需要有人来完全解释并给我一些例子或代码@ChukwujiobiCanon

  • 我使用 SwiftUI View 上的 .searchable 修饰符设置了一个搜索栏,并且我想将栏文本字段的背景颜色设置为 Color.black。我试图更改背景……

    我使用 SwiftUI View 上的 .searchable 修饰符设置了一个搜索栏,并且我想将该栏文本字段的背景颜色设置为 Color.black。

    我尝试在应用程序 @main 入口点的 init() 中更改背景颜色。它确实将背景颜色更改为黑色,但它有点褪色的黑色,稍微浅一点,它不是在 View 中设置时通常会看到的 Color.black 的完美深黑色。

    UITextField.appearance(whenContainedInInstancesOf: [UISearchBar.self]).defaultTextAttributes = [.foregroundColor: UIColor.white]
            
    UITextField.appearance(whenContainedInInstancesOf: [UISearchBar.self]).backgroundColor = UIColor(.black)
            
    UIBarButtonItem.appearance(whenContainedInInstancesOf: [UISearchBar.self]).setTitleTextAttributes([NSAttributedString.Key.foregroundColor: UIColor.black], for: .normal) // Cancel button
    UISearchBar.appearance().overrideUserInterfaceStyle = .dark
    

    顶部导航栏的裁剪图像展示了我的问题:

    cropped image

  • 所以我有一个 Django 模型,它是其他几个模型的外键。我想向我的模型添加一个方法,看看我的模型实例是否真的有任何相关对象。两个问题:我...

    所以我有一个 Django 模型,它是其他几个模型的外键。我想向我的模型添加一个方法,看看我的模型实例是否真的有任何相关对象。两个问题:

    1. p2

    2. p3

    代码示例:

    from django.db import models
    
    class Person(models.Model):
      # <fields>
    
      def has_device(self):
        # ***prefetch related phones and laptops***
        if self.phone_set.first() or self.laptop_set.first():
          return True
        return False
    
    class Laptop(models.Model):
      owner = models.ForeignKey(Person)
      # <fields>
    
    
    class Phone(models.Model):
      owner = models.ForeignKey(Person)
      # <fields>
    
  • 引用 14

    按相反顺序回答您的问题:

    1. 执行此操作的规范方法是使用 .exists() 查询:
    return self.phone_set.exists() or self.laptop_set.exists()
    
    1. 尝试在一个查询中执行此操作没有任何实际意义,因为它们是不同的表。话虽如此,您可以尝试 prefetch_related_objects 助手:
    from django.db.models import prefetch_related_objects
    ...
        def has_device(self):
            prefetch_related_objects([self], "phone_set", "laptop_set")
            return self.phone_set.exists() or self.laptop_set.exists()
    
  • 1) 哎呀。难以置信我忘记了存在。我有点生疏了,谢谢! 2) 为什么你说这无所谓?从理论上讲,运行一个包含 2 个连接的查询不是比运行两个包含一个连接的查询更快吗?

  • 不,因为 prefetch 不执行 (SQL) 连接,它只是在应用程序端“连接”记录的 Python 代码。您考虑的是 select_related,但它只能用于外键,而不能用于子记录。

  • 引用 17

    明白了。所以没有办法(简单地)使用 Django 运行我想要的查询。真不幸。谢谢!

返回
作者最近主题: