【问题标题】:Give a top inset to UIRefreshControl为 UIRefreshControl 提供顶部插图
【发布时间】:2013-10-30 05:17:16
【问题描述】:

我使用类似的 UIRefreshControl(没有 UITableViewController):

UIRefreshControl *refreshControl = [UIRefreshControl new];
[refreshControl addTarget:self action:@selector(viewDidBeginRefreshing:) forControlEvents:UIControlEventValueChanged];
[self.table addSubview:refreshControl];

问题是刷新轮位于 UINavigationController 的半透明栏 (ios7) 下方。 StackOverflow 上关于这个问题的话题很少。而且他们没有给我带来任何有价值的解决方案。

例如,我希望将 UIRefreshControl 的 y 位置向下 80px。

注意:我知道不建议在 UITableViewController 之外使用 UIRefreshControl。所以不需要警告它。

【问题讨论】:

  • 可以很好地注意到我的 UITableView 设置为自动布局,就像我的其他视图一样,以编程方式。 (但应该与它无关)

标签: ios uinavigationcontroller ios7 uirefreshcontrol


【解决方案1】:

这是 AncAinu 在 Swift 4 中的答案的一个版本。

let refreshView = UIView(frame: CGRect(x: 0, y: 80, width: 0, height: 0))
tableView.addSubview(refreshView)

refreshControl = UIRefreshControl()        
refreshControl.addTarget(self, action: #selector(self.viewDidBeginRefreshing), for: .valueChanged)        
refreshView.addSubview(refreshControl)

【讨论】:

    【解决方案2】:

    我找到了一个解决方案,非常简单,不是很干净,但效果很好。

    只需要将刷新控件放在另一个设置的子视图中即可。

    UIView *refreshView = [[UIView alloc] initWithFrame:CGRectMake(0, 80, 0, 0)];
    [self.table addSubview:refreshView];
    
    UIRefreshControl *refreshControl = [UIRefreshControl new];
    [refreshControl addTarget:self action:@selector(viewDidBeginRefreshing:) forControlEvents:UIControlEventValueChanged];
    [refreshView addSubview:refreshControl];
    

    【讨论】:

    • 如上所示,确保将容器UIView 添加到UITableView,然后将UIRefreshControl 作为子视图添加到容器UIView。我反之亦然,但失败了。
    • 'UIRefreshControl may only be managed by a UITableViewController',我认为是由@pechar notes的问题引起的
    • UICollectionView 有什么相同的吗?
    【解决方案3】:

    尝试将其添加到 UIViewController 的 viewDidLoad 中:

    if ([self respondsToSelector:@selector(edgesForExtendedLayout)])
        self.edgesForExtendedLayout = UIRectEdgeNone;
    

    【讨论】:

    • 它可以工作,但...不是我想要的方式,它使导航栏不透明并限制整个表格。
    猜你喜欢
    • 1970-01-01
    • 2011-10-01
    • 2016-01-09
    • 1970-01-01
    • 1970-01-01
    • 2016-05-06
    • 1970-01-01
    • 2017-11-08
    • 1970-01-01
    相关资源
    最近更新 更多