gpt4 book ai didi

alert - iOS8 中的 "Please wait"对话框

转载 作者:行者123 更新时间:2023-12-03 15:05:59 24 4
gpt4 key购买 nike

我以前有一个 “请稍等”我的应用程序中的对话框很长一段时间。使用 UIActivityIndicatorView 很简单并将其添加到 UIAlertView .

然而iOS8引入了UIAlertController .是否可以添加任何东西以产生类似的效果?有没有其他方法可以用 iOS8 做这样的事情?

我搜索了很多网站,但仍然不知道如何使用新 API 来完成。

我将不胜感激任何答案 - 指向库、教程等的链接,这可能会有所帮助。

问候,

马特乌斯

最佳答案

您可以使用模态呈现的自定义 UIViewController,而不是使用 UIAlertController。这是我在 Swift 2.0 中使用的:

class ActivityViewController: UIViewController {

private let activityView = ActivityView()

init(message: String) {
super.init(nibName: nil, bundle: nil)
modalTransitionStyle = .CrossDissolve
modalPresentationStyle = .OverFullScreen
activityView.messageLabel.text = message
view = activityView
}

required init(coder aDecoder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}
}

private class ActivityView: UIView {

let activityIndicatorView = UIActivityIndicatorView(activityIndicatorStyle: .WhiteLarge)
let boundingBoxView = UIView(frame: CGRectZero)
let messageLabel = UILabel(frame: CGRectZero)

init() {
super.init(frame: CGRectZero)

backgroundColor = UIColor(white: 0.0, alpha: 0.5)

boundingBoxView.backgroundColor = UIColor(white: 0.0, alpha: 0.5)
boundingBoxView.layer.cornerRadius = 12.0

activityIndicatorView.startAnimating()

messageLabel.font = UIFont.boldSystemFontOfSize(UIFont.labelFontSize())
messageLabel.textColor = UIColor.whiteColor()
messageLabel.textAlignment = .Center
messageLabel.shadowColor = UIColor.blackColor()
messageLabel.shadowOffset = CGSizeMake(0.0, 1.0)
messageLabel.numberOfLines = 0

addSubview(boundingBoxView)
addSubview(activityIndicatorView)
addSubview(messageLabel)
}

required init(coder aDecoder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}

override func layoutSubviews() {
super.layoutSubviews()

boundingBoxView.frame.size.width = 160.0
boundingBoxView.frame.size.height = 160.0
boundingBoxView.frame.origin.x = ceil((bounds.width / 2.0) - (boundingBoxView.frame.width / 2.0))
boundingBoxView.frame.origin.y = ceil((bounds.height / 2.0) - (boundingBoxView.frame.height / 2.0))

activityIndicatorView.frame.origin.x = ceil((bounds.width / 2.0) - (activityIndicatorView.frame.width / 2.0))
activityIndicatorView.frame.origin.y = ceil((bounds.height / 2.0) - (activityIndicatorView.frame.height / 2.0))

let messageLabelSize = messageLabel.sizeThatFits(CGSizeMake(160.0 - 20.0 * 2.0, CGFloat.max))
messageLabel.frame.size.width = messageLabelSize.width
messageLabel.frame.size.height = messageLabelSize.height
messageLabel.frame.origin.x = ceil((bounds.width / 2.0) - (messageLabel.frame.width / 2.0))
messageLabel.frame.origin.y = ceil(activityIndicatorView.frame.origin.y + activityIndicatorView.frame.size.height + ((boundingBoxView.frame.height - activityIndicatorView.frame.height) / 4.0) - (messageLabel.frame.height / 2.0))
}
}

你像这样使用它:
let activitiyViewController = ActivityViewController(message: "Loading...")
presentViewController(activitiyViewController, animated: true, completion: nil)

它看起来像这样:

ActivityViewController

演示 Controller 和动画过渡

看到这个 answer对于重新创建 UIAlertController 的示例实现动画使用 UIViewControllerAnimatedTransitioning .

关于alert - iOS8 中的 "Please wait"对话框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25652101/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com