当我调用UIView
方法时,我想在UITableViewController
的中心显示一个小showHud
个文字。
- (void) showHud {
UIView *paintView=[[UIView alloc]initWithFrame:CGRectMake(150, 150, 120, 30)];
[paintView setBackgroundColor:[UIColor yellowColor]];
[self.view addSubview:paintView];
}
实际上,这段代码的问题在于,当我滚动tableview
时,视图不会停留在它的位置上。有可能以某种方式固定它吗?
答案 0 :(得分:3)
我不认为你可以使用UITableViewController实现这一点,因为这种控制器的view属性是一个UITableView,因此内容将始终随之滚动。
您需要创建一个常规的UIViewController并将UITableView添加到该控制器的主视图中。然后,您添加到该主视图的任何其他内容都将保留在表视图之外。
答案 1 :(得分:1)
尝试实施scrollViewDidScroll
委托方法,并根据tableview偏移量更改paintView
的框架。
例如:
- (void)scrollViewDidScroll:(UIScrollView *)scrollView {
CGPoint offset = scrollView.contentOffset
[paintView setFrame:CGRectMake(150, 150+offset.y, 120, 30)];
}
但最好的方法是创建一个简单的UIViewController。
由于pullToRefresh控制器,你必须使用UItableViewController
吗?
答案 2 :(得分:1)
UI可以向窗口添加视图并将其放置在最前面:
UIView testView = [[UIIView alloc]initWithFrame:CGRectMake(10, [[UIScreen mainScreen]applicationFrame].size.height - 85 , 75, 75)]; [[[[[NSApplication sharedApplication] mainWindow] contentView] addSubview:testbox]; addSubview: testView]; testView.layer.zPosition = MAXFLOAT;
答案 3 :(得分:0)
UITableViewController
通常嵌入在“父”视图控制器中,如UINavigationController
。然后,UITableView
会有一个超级视图,例如UINavigationControllerWrapperView
。即使您的表视图控制器是根视图控制器,表视图的超级视图也是UIWindow
。
因此,您可以放心地假设您的表格视图始终具有超级视图。然后将UIView
添加到此超级视图而不是表格本身:
//Note: frame should be different here as it's in the superview's coordinate system
UIView *paintView=[[UIView alloc]initWithFrame:CGRectMake(150, 150, 120, 30)];
[paintView setBackgroundColor:[UIColor yellowColor]];
[self.view.superview addSubview:paintView];