当我尝试将ATMHud添加到uitableviewcontroller子视图时,它确实有效,但它不会禁用滚动,如果tableview不在顶部,则无法看到hud视图。我所做的是添加到tabBarController.view,但是我想知道这是一个好主意还是以后我可能会遇到问题。
另一个问题是tabBarController.view框架是整个屏幕还是仅仅是底部。为什么atmhud会在屏幕中间显示出来?
提前致谢!
严
============ 找到一篇博文,展示如何在uitableviewcontroller
中单独重置self.view并添加tableviewUITableViewController and fixed sub views
- (void)viewDidLoad {
[super viewDidLoad];
if (!tableView &&
[self.view isKindOfClass:[UITableView class]]) {
tableView = (UITableView *)self.view;
}
self.view = [[[UIView alloc] initWithFrame:
[UIScreen mainScreen].applicationFrame] autorelease];
self.tableView.frame = self.view.bounds;
self.tableView.contentInset = UIEdgeInsetsMake(44.0, 0.0, 0.0, 0.0);
[self.view addSubview:self.tableView];
UIView *fixedBar = [[UIView alloc] initWithFrame:
CGRectMake(0.0, 0.0, self.view.bounds.size.width, 44.0)];
fixedBar.backgroundColor = [UIColor colorWithRed:
0.0 green:1.0 blue:0.0 alpha:0.7];
[self.view addSubview:fixedBar];
[fixedBar release];
}
在此之后将hud添加到self.view时,您将能够禁用底部的tableview。 如果这是设置tableview的好方法,请告诉我
答案 0 :(得分:1)
使用标签栏的问题是,hud现在是模态的,用户无法更改标签。
听起来桌面视图不是你的主要观点,因为它可以被“掩盖”。如果它不是主视图,则将ATMHud添加到self.view。如果tableView与self.view相同,则向其添加新的透明视图,然后将HUD添加到该视图。
tabBarController.view是托管选项卡式视图的视图 - 如果要查看其大小(或框架),请使用NSStringFromCGRect(self.tabBarController.frame)记录它;
编辑:我刚做了一个测试,ATMHud DOES阻止了用户界面。我只能想到你没有把它插入你需要的地方(在当前视图的子视图的顶部。)我有一个演示项目,我这样做:hud = [[ATMHud alloc] initWithDelegate:self];
[self.view addSubview:hud.view];
[hud setCaption:@"Howdie"];
[hud setActivity:YES];
[hud show];
[hud hideAfter:5];
hud下的按钮未激活 - 实际上视图中没有任何内容处于活动状态(可能导航栏可能会处于活动状态)
如果您需要ARCified和现场测试版本,可以抓住它here
EDIT2:您的问题的解决方案如下。请注意,ATMHud会阻止点击进入表格,下面的代码会停止滚动:
- (void)hudWillAppear:(ATMHud *)_hud
{
self.tableView.scrollEnabled = NO;
}
- (void)hudDidDisappear:(ATMHud *)_hud
{
self.tableView.scrollEnabled = YES;
}
转储视图:
#import <QuartzCore/QuartzCore.h>
#import "UIView+Utilities.h"
@interface UIView (Utilities_Private)
+ (void)appendView:(UIView *)v toStr:(NSMutableString *)str;
@end
@implementation UIView (Utilities_Private)
+ (void)appendView:(UIView *)a toStr:(NSMutableString *)str
{
[str appendFormat:@" %@: frame=%@ bounds=%@ layerFrame=%@ tag=%d userInteraction=%d alpha=%f hidden=%d\n",
NSStringFromClass([a class]),
NSStringFromCGRect(a.frame),
NSStringFromCGRect(a.bounds),
NSStringFromCGRect(a.layer.frame),
a.tag,
a.userInteractionEnabled,
a.alpha,
a.isHidden
];
}
@end
@implementation UIView (Utilities)
+ (void)dumpSuperviews:(UIView *)v msg:(NSString *)msg
{
NSMutableString *str = [NSMutableString stringWithCapacity:256];
while(v) {
[self appendView:v toStr:str];
v = v.superview;
}
[str appendString:@"\n"];
NSLog(@"%@:\n%@", msg, str);
}
+ (void)dumpSubviews:(UIView *)v msg:(NSString *)msg
{
NSMutableString *str = [NSMutableString stringWithCapacity:256];
if(v) [self appendView:v toStr:str];
for(UIView *a in v.subviews) {
[self appendView:a toStr:str];
}
[str appendString:@"\n"];
NSLog(@"%@:\n%@", msg, str);
}
@end