我有一個嵌入到UITableViewCell中的MKMapView。有時,該部分會重新加載。問題在於刷新發生時地圖單元突然變白。在UITableViewCell重載後MKMapView變白了
下面是基本的代碼
- (void)viewDidLoad
{
[super viewDidLoad];
_mapCell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:@"Map"];
[_mapCell setSelectionStyle:UITableViewCellSelectionStyleNone];
[_mapCell setBackgroundColor:[UIColor greenColor]];
_mapView = [[MKMapView alloc] init];
[_mapView setTranslatesAutoresizingMaskIntoConstraints:NO];
[_mapCell.contentView addSubview:_mapView];
[_mapCell.contentView addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"H:|[_mapView]|" options:0 metrics:0 views:NSDictionaryOfVariableBindings(_mapView)]];
[_mapCell.contentView addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"V:|[_mapView]|" options:0 metrics:0 views:NSDictionaryOfVariableBindings(_mapView)]];
}
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
[_mapCell setSelectionStyle:UITableViewCellSelectionStyleNone];
return _mapCell;
}
和重加載代碼
- (void)viewDidAppear:(BOOL)animated
{
[super viewDidAppear:animated];
double delayInSeconds = 2.0;
dispatch_time_t popTime = dispatch_time(DISPATCH_TIME_NOW, (int64_t)(delayInSeconds * NSEC_PER_SEC));
dispatch_after(popTime, dispatch_get_main_queue(), ^(void){
[self.tableView reloadSections:[NSIndexSet indexSetWithIndex:0] withRowAnimation:UITableViewRowAnimationAutomatic];
});
}
Here is the sample project to demonstrate the problem.
注:如果配圖使用JIT的實現代碼如下是laggy。因此,我爲它創建了一個iVar並且早些時候啓動它。
你忘了打電話給viewDidAppear的超級實現。 –
是的,儘管這不是原因。 (這是一個快速寫作,我錯過了)(已添加) – Byte