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的主要内容,如果未能解决你的问题,请参考以下文章