ios – 如何在UIAlertController的中心显示活动指示器?

我目前在屏幕上显示一个UIAlertController.警报的视图只应在警报的中心显示2个元素,一个标题一个UIActivityIndi​​catorView.以下是显示警报及其元素的功能.
func displaySignUpPendingalert() -> UIAlertController {
        //Create the UIAlertController
        let pending = UIAlertController(title: "Creating New User",message: nil,preferredStyle: .Alert)
        //Create the activity indicator to display in it.
        let indicator = UIActivityIndicatorView(frame: CGRectMake(pending.view.frame.width / 2.0,pending.view.frame.height / 2.0,20.0,20.0))
        indicator.center = CGPointMake(pending.view.frame.width / 2.0,pending.view.frame.height / 2.0)
        //Add the activity indicator to the alert's view
        pending.view.addSubview(indicator)
        //Start animating
        indicator.startAnimating()

        self.presentViewController(pending,animated: true,completion: nil)
        return pending
    }

但是,活动指示器不会显示在视图的中心,实际上它显示在屏幕的右下方,远离视图.这是什么原因?

编辑:我明白,我可以硬编码为指标的位置,但我希望警报工作在多个设备与多个屏幕尺寸和方向.

解决方法

创建视图时,请确保设置frame属性.
func displaySignUpPendingalert() -> UIAlertController {
        //create an alert controller
        let pending = UIAlertController(title: "Creating New User",preferredStyle: .Alert)

        //create an activity indicator
        let indicator = UIActivityIndicatorView(frame: pending.view.bounds)
        indicator.autoresizingMask = [.FlexibleWidth,.FlexibleHeight]

        //add the activity indicator as a subview of the alert controller's view
        pending.view.addSubview(indicator)
        indicator.userInteractionEnabled = false // required otherwise if there buttons in the UIAlertController you will not be able to press them
        indicator.startAnimating()

        self.presentViewController(pending,completion: nil)

        return pending
}

到@ 62Shark:

let pending = UIAlertController(title: "Creating New User",preferredStyle: .Alert)

let indicator = UIActivityIndicatorView()
indicator.setTranslatesAutoresizingMaskIntoConstraints(false)
pending.view.addSubview(indicator)

let views = ["pending" : pending.view,"indicator" : indicator]
var constraints = NSLayoutConstraint.constraintsWithVisualFormat("V:[indicator]-(-50)-|",options: nil,metrics: nil,views: views)
constraints += NSLayoutConstraint.constraintsWithVisualFormat("H:|[indicator]|",views: views)
pending.view.addConstraints(constraints)

indicator.userInteractionEnabled = false
indicator.startAnimating()

self.presentViewController(pending,completion: nil)

相关文章

UITabBarController 是 iOS 中用于管理和显示选项卡界面的一...
UITableView的重用机制避免了频繁创建和销毁单元格的开销,使...
Objective-C中,类的实例变量(instance variables)和属性(...
从内存管理的角度来看,block可以作为方法的传入参数是因为b...
WKWebView 是 iOS 开发中用于显示网页内容的组件,它是在 iO...
OC中常用的多线程编程技术: 1. NSThread NSThread是Objecti...