- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我有一个嵌入到 UITableViewCell 中的 MKMapView。有时,该部分会重新加载。问题是当刷新发生时, map 单元决定突然变白。
这是基本代码
- (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.
注意:如果与 map 一起使用, TableView 的 JIT 会滞后。因此,我为它创建了一个 iVar 并更早地初始化了它。
最佳答案
来自docs
reloadSections:withRowAnimation:
Reloads the specified sections using a given animation effect.
- (void)reloadSections:(NSIndexSet *)sections withRowAnimation:(UITableViewRowAnimation)animation
Parameters
sections An index set identifying the sections to reload.
animation A constant that indicates how the reloading is to be animated, for
The animation constant affects the direction in which both the old and the new section rows slide. For example, if the animation constant is UITableViewRowAnimationRight, the old rows slide out to the right and the new cells slide in from the right.
Discussion
Calling this method causes the table view to ask its data source for new cells for the specified sections. The table view animates the insertion of new cells in as it animates the old cells out. Call this method if you want to alert the user that the values of the designated sections are changing. If, however, you just want to change values in cells of the specified sections without alerting the user, you can get those cells and directly set their new values.
特别是
The animation constant affects the direction in which both the old and the new section rows slide. For example, if the animation constant is UITableViewRowAnimationRight, the old rows slide out to the right and the new cells slide in from the right.
您正在返回表格 View 也试图通过动画移开的同一个单元格。这就是 map View 消失的原因。
你将不得不使用这部分来解决
If, however, you just want to change values in cells of the specified sections without alerting the user, you can get those cells and directly set their new values.
使用 UITableViewRowAnimationNone
也有效
[self.tableView reloadSections:[NSIndexSet indexSetWithIndex:0] withRowAnimation:UITableViewRowAnimationNone];
关于ios - UITableViewCell 重新加载后 MKMapView 变白,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22024178/
我正在使用 RecyclerView 到 ViewPager 共享元素转换。问题是,当 viewpager 被分页到另一个图像时,在返回到 recyclerview 后,首先被动画化的 imagevi
我正在使用 WKWebView 在我的应用程序中显示谷歌地图。这是网址:http://ec2-54-198-148-171.compute-1.amazonaws.com/map_question.h
因此,在工作中,我正在为某人编写 Excel 中的宏/用户表单。它工作得很好(我认为),并且完全完成了它需要做的事情,并且运行时间不到 1 分钟,遍历了大约 70k 个单元并组织它们。现在我想知道是否
我有一个嵌入到 UITableViewCell 中的 MKMapView。有时,该部分会重新加载。问题是当刷新发生时, map 单元决定突然变白。 这是基本代码 - (void)viewDidLoad
我想让我的 android 屏幕暂时“闪烁”白色(仅一次)。它需要足够长,以便用户能够分辨出屏幕确实变白了。 用户将登陆一个屏幕,该屏幕将在 5 秒后闪烁白色,然后再次显示原始屏幕(可能从白色逐渐消失
在 ICS 上(据我所知),当我在 web View 中打开一个单选元素或另一个对话框元素时,一旦该元素关闭,我就会得到一个白屏,单选框除外。元素仍然可以在 webview 中点击,一旦点击,它们就会
我正在 Canvas 上正确绘图并将其保存为位图。但是,我想通过单击按钮将 Canvas 重置为白色。 这是我的代码: public class Canvas extends View { P
我有一款游戏最初是在 XCode 中使用 cocos2d v2.x 编写的(未使用其他实用程序)。 我一直在将其移植到 Spritebuilder 项目,并因此移植到 cocos2d V3.x。我遇到
在 Tint Sprite White 使用简单着色器示例代码位于 Sprite Effects Sample ,我已将着色器的 .fx 文件加载到示例项目中,并替换了其中一个 Draw() 调用中的
我是一名优秀的程序员,十分优秀!