如何在编程创建的按钮上添加微调器指示器

时间:2016-03-04 13:20:28

标签: ios swift uibutton uiactivityindicatorview

你好我已经在我的静态TableView上动态创建了按钮

override func tableView(tableView: UITableView, viewForFooterInSection section: Int) -> UIView? {
        let footerView = UIView(frame: CGRectMake(0, 0, tableView.frame.size.width, tableView.frame.size.height))

  let button   = UIButton(type: UIButtonType.System) as UIButton
        button.frame = CGRectMake(0, 0, 414, 65)

        button.setTitle(buttonTitle, forState: UIControlState.Normal)
        button.addTarget(self, action:buttonAction, forControlEvents: UIControlEvents.TouchUpInside)
        button.setTitleColor(UIColor.whiteColor(), forState:UIControlState.Normal)
        button.titleLabel?.font = UIFont(name: Variables.MONTESERRAT_REGULAR, size: 20.0)
  button.backgroundColor = UIColor().blueColor()       //top
         footerView.addSubview(button!)


        return footerView
}

我想在单击按钮时在按钮顶部显示微调器。我知道如何制作点击功能或如何创建微调器。我只是不知道如何将微调器放在按钮顶部代替标题,这样当用户单击按钮时,标题隐藏和微调器移动到标题位置。我希望你明白我在说什么

4 个答案:

答案 0 :(得分:2)

UIActivityIndicatorView *myspinner = [[UIActivityIndicatorView alloc] initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleWhiteLarge];
    [myspinner setCenter:button.center];
    [button addSubview:myspinner];

答案 1 :(得分:2)

这是我的快速版本

let loginSpinner: UIActivityIndicatorView = {
    let loginSpinner = UIActivityIndicatorView(activityIndicatorStyle: .white)
    loginSpinner.translatesAutoresizingMaskIntoConstraints = false
    loginSpinner.hidesWhenStopped = true
    return loginSpinner
}()

然后在我的viewDidLoad函数中:

    loginButton.addSubview(loginSpinner)
    loginSpinner.centerXAnchor.constraint(equalTo: loginButton.centerXAnchor).isActive = true
    loginSpinner.centerYAnchor.constraint(equalTo: loginButton.centerYAnchor).isActive = true

最后在需要的地方调用loginSpinner.startAnimating()loginSpinner.stopAnimating()函数。

注意:在开始和停止动画设置时,我也禁用了按钮,因此取消设置了禁用按钮的标题,以便微调器替换标题loginButton.setTitle("", for: .disabled) // clear the title when it is disabled to just show the spinner

答案 2 :(得分:1)

  1. 您创建了一个微调器(UIActivityIndicatorView),也使其自动隐藏(setHidesWhenStopped:
  2. 您将其作为子视图添加到按钮(addSubview
  3. 您将其放在按钮的中心(setCenter:
  4. 按下按钮,setTitle为空字符串(setTitle:forControlState:)并运行微调器(startAnimating

答案 3 :(得分:0)

以下是我通常的做法,并且您可以利用一些不同的行为:

let spinner = UIActivityIndicatorView(activityIndicatorStyle: .White)

spinner.frame = CGRect(x: -20.0, y: 6.0, width: 20.0, height: 20.0) // (or wherever you want it in the button)
spinner.startAnimating()
spinner.alpha = 0.0

button.addSubview(spinner)

您可以相应地更改Alpha。或者使用隐藏属性,停止/开始制作动画等。