iOS:UISearchBar中的UIActivityIndi​​cator

时间:2012-11-07 18:13:49

标签: ios xcode search uisearchbar uiactivityindicatorview

搜索时是否可以在UISearchBar中显示UIActivityIndi​​cator?

3 个答案:

答案 0 :(得分:7)

是的,你可以。

开始搜索时,创建一个活动指示符,并使用UISearchBar方法将其添加为addSubView的子视图。完成搜索后,使用removeFromSuperView方法将其从搜索栏中删除。

UIActivityIndicatorView *spinner = [[UIActivityIndicatorView alloc] initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleGray];
//set frame for activity indicator
[searchBar addSubview: spinner];
[spinner startAnimating];

请参阅此链接以获取替代way

答案 1 :(得分:7)

您可以在Swift 3中使用以下扩展名。

UISearchBar扩展程序

extension UISearchBar {

    public var textField: UITextField? {
        let subViews = subviews.flatMap { $0.subviews }
        guard let textField = (subViews.filter { $0 is UITextField }).first as? UITextField else {
            return nil
        }
        return textField
    }

    public var activityIndicator: UIActivityIndicatorView? {
        return textField?.leftView?.subviews.flatMap{ $0 as? UIActivityIndicatorView }.first
    }

    var isLoading: Bool {
        get {
            return activityIndicator != nil
        } set {
            if newValue {
                if activityIndicator == nil {
                    let newActivityIndicator = UIActivityIndicatorView(activityIndicatorStyle: .gray)
                    newActivityIndicator.transform = CGAffineTransform(scaleX: 0.7, y: 0.7)
                    newActivityIndicator.startAnimating()
                    newActivityIndicator.backgroundColor = UIColor.white
                    textField?.leftView?.addSubview(newActivityIndicator)
                    let leftViewSize = textField?.leftView?.frame.size ?? CGSize.zero
                    newActivityIndicator.center = CGPoint(x: leftViewSize.width/2, y: leftViewSize.height/2)
                }
            } else {
                activityIndicator?.removeFromSuperview()
            }
        }
    }
}

用法:

显示活动: searchBar.isLoading = true

隐藏活动: searchBar.isLoading = false

image

答案 2 :(得分:0)

没有发现任何宣传的解决方案在iOS13上能很好地工作...这是我自己的解决方案,它是搜索栏的子类,应该对将来的使用更可靠

Base64InputStream