UITableView - 带有背景图像的 UIRefreshControl

Posted

技术标签:

【中文标题】UITableView - 带有背景图像的 UIRefreshControl【英文标题】:UITableView - UIRefreshControl with Background Image 【发布时间】:2014-05-02 13:31:19 【问题描述】:

我已经将 UIRefreshControl 实现为 UITableViewController 上刷新控件的一部分 - 一切似乎都可以正常工作 - 如果你下拉页面会拉回数据 - 但我注意到活动指示器没有出现在视图中。

经过一番调查,我意识到问题似乎与我正在应用到 UiTableViewController 的背景图像有关 - 如果我禁用它,活动指示器会按预期显示。

我的设置如下 - 我扩展了一个 UITableViewController 类来创建一个名为 BG_Blur_TableViewController 的新类 - 这个类基本上通过以下代码应用背景图像 -

BG_Blur_TableViewController.m - (void)viewDidLoad [超级viewDidLoad];

     self.prefs = [NSUserDefaults standardUserDefaults];
    self.tableView.backgroundView = [[UIImageView alloc] initWithImage:
                                 [UIImage imageNamed:[self.prefs stringForKey:@"BGImageBlur"]]];




然后我在我的 UITableViewController 中使用这个类,如下所示 -

Article_HP_TableViewController.h

#import <UIKit/UIKit.h>
#import "BG_Blur_TableViewController.h"
#import <MobileCoreServices/MobileCoreServices.h>
#import <SystemConfiguration/SystemConfiguration.h>
#import "AFNetworking.h"

    @interface Article_HP_TableViewController :      BG_Blur_TableViewController<NSFetchedResultsControllerDelegate>

    @property NSArray *articleArray;
    @property (strong, nonatomic) NSManagedObjectContext *managedObjectContext;
     @property (strong, nonatomic) NSFetchedResultsController *fetchedResultsController;

 @end

我在这个方法中应用了刷新控制——

- (void)viewDidLoad

    [super viewDidLoad];

     self.prefs = [NSUserDefaults standardUserDefaults];
      [self.tableView setSeparatorStyle:UITableViewCellSeparatorStyleNone];
     //self.tableView.contentInset = UIEdgeInsetsMake(50, 50, 50, 50);


    // Initialize Refresh Control
    UIRefreshControl *refreshControl = [[UIRefreshControl alloc] init];

    // Configure Refresh Control
    [refreshControl addTarget:self action:@selector(refresh:)  forControlEvents:UIControlEventValueChanged];

    // Configure View Controller
    [self setRefreshControl:refreshControl];

并用这个删除它 -

- (void)refresh:(id)sender 
    NSLog(@"Refreshing");

    // End Refreshing
    [(UIRefreshControl *)sender endRefreshing];

我是否可以应用刷新控件使其显示在 bgimage 顶部?

【问题讨论】:

【参考方案1】:

尝试更改刷新控制的zPosition。您应该会收到如下信息:

_refreshControl = [[UIRefreshControl alloc] init];
[_refreshControl addTarget:self action:@selector(refresh:) forControlEvents:UIControlEventValueChanged];
[_ tableView setRefreshControl:_refreshControl];
_refreshControl.layer.zPosition += 1;

【讨论】:

以为这会是个大问题。谢谢

以上是关于UITableView - 带有背景图像的 UIRefreshControl的主要内容,如果未能解决你的问题,请参考以下文章

UITableView 背景颜色设置两次

UITableView 不显示背景图片

内容的 UITableView 背景图像

带有滚动背景图案的 UITableView

使用图像作为 UITableView 背景;背景仍然显示黑色

如何更改 UITableView 背景图像的大小?