导航栏中心的活动指示器

Jef*_*eff 11 xcode uinavigationbar uinavigationcontroller ios

在我的应用程序中,我想在导航栏的中心添加活动指示器(标题位置).当Web服务响应完成时,它应该替换为旧标题.我的应用程序中有5个导航栏.当我在谷歌搜索时,我得到了几个代码但他们只是改变左或右按钮.任何帮助?

rde*_*mar 20

您使用导航项的titleView属性来替换导航栏的标题.因此,要添加活动指示器,请执行以下操作:

    UIActivityIndicatorView *aiView = [[UIActivityIndicatorView alloc] initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleGray];
    aiView.hidesWhenStopped = NO; //I added this just so I could see it
    self.navigationItem.titleView = aiView;
Run Code Online (Sandbox Code Playgroud)

如果要删除它,并再次显示标题:

    self.navigationItem.titleView = nil;
Run Code Online (Sandbox Code Playgroud)


Waf*_*eln 11

pasqls的答案对我很有用,我写的很快

    func showActivityIndicator() {
        let activityIndicatorView = UIActivityIndicatorView(activityIndicatorStyle: UIActivityIndicatorViewStyle.White)
        activityIndicatorView.frame = CGRectMake(0, 0, 14, 14)
        activityIndicatorView.color = UIColor.blackColor()
        activityIndicatorView.startAnimating()

        let titleLabel = UILabel.new()
        titleLabel.text = "...Connecting"
        titleLabel.font = UIFont.italicSystemFontOfSize(14)

        let fittingSize = titleLabel.sizeThatFits(CGSizeMake(200.0, activityIndicatorView.frame.size.height))
        titleLabel.frame = CGRectMake(activityIndicatorView.frame.origin.x + activityIndicatorView.frame.size.width + 8, activityIndicatorView.frame.origin.y, fittingSize.width, fittingSize.height)

        let titleView = UIView(frame: CGRectMake(((activityIndicatorView.frame.size.width + 8 + titleLabel.frame.size.width) / 2), ((activityIndicatorView.frame.size.height) / 2), (activityIndicatorView.frame.size.width + 8 + titleLabel.frame.size.width), (activityIndicatorView.frame.size.height)))
        titleView.addSubview(activityIndicatorView)
        titleView.addSubview(titleLabel)

        self.navigationItem.titleView = titleView
    }

    func hideActivityIndicator() {
        self.navigationItem.titleView = nil
    }
Run Code Online (Sandbox Code Playgroud)

  • 最好写一下你的答案的一些解释. (3认同)