使 UIActivityIndicator 与 UIRefreshControl 中的 on 大小相同
Posted
技术标签:
【中文标题】使 UIActivityIndicator 与 UIRefreshControl 中的 on 大小相同【英文标题】:Making UIActivityIndicator be the same size as the on in UIRefreshControl 【发布时间】:2015-07-02 14:45:48 【问题描述】:我正在尝试,因为有时我需要手动刷新屏幕,有时无需拉动屏幕即可刷新数据,因此我需要模拟活动指示器。
_refreshControl = [[UIRefreshControl alloc] init];
_refreshControl.tintColor = [UIColor grayColor];
[_refreshControl addTarget:self action:@selector(refreshItems) forControlEvents:UIControlEventValueChanged];
[self.collectionView addSubview:_refreshControl];
UIView *activityIndicatorWrapper = [[UIView alloc] initWithFrame:_refreshControl.frame];
[self.collectionView addSubview:activityIndicatorWrapper];
_activityIndicator = [[UIActivityIndicatorView alloc] initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleWhiteLarge];
activityIndicatorWrapper.frame = _refreshControl.bounds;
[activityIndicatorWrapper addSubview:_activityIndicator];
[_activityIndicator startAnimating];
[_activityIndicator autoCenterInSuperview];
_activityIndicator.hidesWhenStopped = YES;
问题是尺寸不同,即使我把它们做成同一个框架..
【问题讨论】:
【参考方案1】:我也尝试过这样做。我认为这是不可能的,尤其是因为我们看不到 UIKit 在幕后做了什么。
【讨论】:
你是怎么解决的?到目前为止,我跳过了手动刷新,因为它更麻烦【参考方案2】:把y: -105
改成你想要的,也许先试试y: 0
运行这个然后尝试拉动刷新,希望这会有所帮助
private func setupTableViewRefresher()
let refreshControl = UIRefreshControl()
refreshControl.attributedTitle = NSAttributedString(string: " ", attributes: [NSAttributedString.Key.foregroundColor: UIColor.clear, NSAttributedString.Key.font : UIFont.boldSystemFont(ofSize: 56)])
refreshControl.transform = CGAffineTransform(scaleX: 0.6, y: 0.6)
refreshControl.backgroundColor = self.view.backgroundColor
// refreshControl.addTarget(self, action: #selector(refreshTableView(_:)), for: .valueChanged)
tableView.refreshControl = refreshControl
private func createSpinnerFooter() -> UIView
let footerView = UIView(frame: CGRect(x: 0, y: -105, width: view.frame.size.width, height: 100))
let spinner = UIActivityIndicatorView()
spinner.transform = CGAffineTransform(scaleX: 0.9, y: 0.9)
spinner.center = footerView.center
footerView.addSubview(spinner)
spinner.startAnimating()
return footerView
override func viewDidLoad()
super.viewDidLoad()
setupTableViewRefresher()
tableView.isHidden = false
tableView.tableFooterView = nil
tableView.tableFooterView = self.createSpinnerFooter()
【讨论】:
以上是关于使 UIActivityIndicator 与 UIRefreshControl 中的 on 大小相同的主要内容,如果未能解决你的问题,请参考以下文章
UIAlertView 与 UIActivityIndicator 有点矛盾
很难将 UIActivityIndicator 放置在 UIButton 中
重新加载 UICollectionView 时 UIActivityIndicator 不会停止
UIActivityIndicator 在构建 UIView 层次结构时旋转?