Objective c 从不同线程返回后在UITableView上设置contentInset
从单独的线程返回后,如何在UITableView上设置内容插入 这里有一些代码来了解我正在做的事情的要点,也可以在这个问题的范围之外提供建议 我的主要目标是,如果没有可用的广告,则折叠webview将进入的区域(contentInset创建的表上方的区域)Objective c 从不同线程返回后在UITableView上设置contentInset,objective-c,multithreading,ios,uitableview,Objective C,Multithreading,Ios,Uitableview,从单独的线程返回后,如何在UITableView上设置内容插入 这里有一些代码来了解我正在做的事情的要点,也可以在这个问题的范围之外提供建议 我的主要目标是,如果没有可用的广告,则折叠webview将进入的区域(contentInset创建的表上方的区域) //In View did Load [NSThread detachNewThreadSelector:@selector(getBannerAdContent) toTarget:self withObject:nil]; -(voi
//In View did Load
[NSThread detachNewThreadSelector:@selector(getBannerAdContent) toTarget:self withObject:nil];
-(void)getBannerAdContent
{
NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
NSString *html = [NSString stringWithContentsOfURL:[NSURL URLWithString:@"http://192.168.0.18:83/PhotoGalleryService.svc/LoadBannerAd/"]];
[self performSelectorOnMainThread:@selector(loadBannerAd:) withObject:html waitUntilDone:NO];
[pool release];
}
-(void)loadBannerAd:(NSString*)html
{
UIWebView *webView = [[UIWebView alloc] initWithFrame:CGRectMake(10, 2, 300, 40)];
[webView loadHTMLString:html baseURL:nil];
webView.delegate = self;
webView.scalesPageToFit = NO;
webView.autoresizingMask = (UIViewAutoresizingFlexibleLeftMargin | UIViewAutoresizingFlexibleRightMargin | UIViewAutoresizingFlexibleTopMargin | UIViewAutoresizingFlexibleBottomMargin);
[self.view addSubview:webView];
[webView release];
UITableView *myTableView = (UITableView*)[self.view.subviews objectAtIndex:0 ];
//The following line is doing nothing.
myTableView.contentInset = UIEdgeInsetsMake(44,0.0,0,0.0);
}
如果你能给我任何帮助,我将不胜感激
编辑:
再详细一点的解释
在我看来,我点燃了另一根线。这个线程从我设置的服务加载html,然后在webview上设置它。然而,当我通过的时候,在它到达终点线之前
myTableView.contentInset = UIEdgeInsetsMake(44,0.0,0,0.0);
该表视图已加载,因此上面的行无效
干杯,内容插图设置插图大小,但不会滚动您的tableview来显示它。设置contentInset后,如果希望contentOffset向上滚动以显示表格视图的顶部,请设置contentOffset
myTableView.contentOffset = CGPointZero;
适用于Swift5和UITableView
override func viewDidLayoutSubviews() {
super.viewDidLayoutSubviews()
if shouldAddContentInset {
tableView.contentInset = UIEdgeInsets(top: 100, left: 0, bottom: 0, right: 0)
tableView.contentOffset = CGPoint(x: 0, y: -tableView.contentInset.top)
}
}
然后从某个回调函数或委托:
func gotResponseFromSomewhere() {
shouldAddContentInset = true
viewDidLayoutSubviews()
}
你的问题是什么?您的代码似乎设置了
contentInset
,因此我不明白您需要什么帮助。当我脱离单独的线程时,contentInset没有任何影响。因此,下面的//行什么也没做。我不知道它是否只是iOS7,但是在有顶部插入时将contentOffset设置为0不会滚动到视图的顶部。要实现滚动到顶部的效果,必须将偏移量设置为CGPointMake(0,-scrollView.contentInset.top)