在屏幕之间切换时边缘闪烁ios7
Posted
技术标签:
【中文标题】在屏幕之间切换时边缘闪烁ios7【英文标题】:Edge flicker when transitioning between screens ios7 【发布时间】:2014-02-05 10:09:08 【问题描述】:升级到 xcode 5 后,我注意到在两个屏幕之间切换时屏幕边缘出现闪烁。闪烁显示为帧边缘的垂直白线。这似乎只发生在 ios7 上。
我在两个屏幕之间的转换是通过故事板转场实现的。
更新:
我通过添加以下内容解决了这个问题: self.view.clipsToBounds = YES; 我的看法。
【问题讨论】:
【参考方案1】:我发现了这个问题。我必须在我的观点上将clipsToBounds
设置为YES
。这解决了问题。
【讨论】:
我会给 +1000 这个。基本上,我的 iOS 应用程序中有复杂的图形,当我在视图顶部打开一个半透明视图时,我的 UITableViewCell 开始出现一些闪烁......不知道从哪里开始搜索......这已经解决了这个问题... :) 谢谢。 我应该对我所有的子视图做些什么吗?请回复【参考方案2】:当您尝试从后台更新 UI 时,iOS7 中会出现此问题。为了避免上述情况,您应该使用GCD
方法更新UI,如下所示。
dispatch_sync(dispatch_get_main_queue(), ^
// Update UI (e.g. Alert, label changes etc)
);
或
dispatch_async(dispatch_get_main_queue(), ^
// Update UI (e.g. Alert, label changes etc)
);
这将确保在主队列中更新。
【讨论】:
view_did_load 在主线程中调用正确吗?因此,对于在那里进行的标签更改,我可以保持原样吗?我尝试将整个 viewWillAppear 函数放在 dispatch_async(dispatch_get_main_queue) 中,但问题仍然存在。我也无法在模拟器上重现 - 有没有办法在模拟器上轻松重现,以便我更容易测试? 您应该在 viewWillAppear 中为代码创建方法并调用该方法。您不应该直接调用 viewWillAppear。 是的,我会这样做以使其更清洁......但是,这不应该导致不同的行为正确吗? 我应该把dispatch_async放在哪里?在新定义的函数内部,还是在 viewWillAppear 内部,围绕函数调用?你知道我能不能在模拟器上重现吗? 我试过了,但问题仍然存在。【参考方案3】:我在 iOS7 中遇到了 tableView Segues 的问题,而 clipsToBounds BOOL 对我没有任何帮助。对我来说,解决方法是在 viewDidAppear 中加载我的背景图像,而不是 viewDidLoad。下面的例子:
- (void)viewDidLoad
[super viewDidLoad];
tableData = [NSArray arrayWithObjects:@"First", @"Second", @"Third", nil];
[self.tableView setSeparatorStyle:UITableViewCellSeparatorStyleNone];
UIEdgeInsets inset = UIEdgeInsetsMake(5, 0, 0, 0);
self.tableView.contentInset = inset;
//Don't load your background image or color here
-(void)viewDidAppear:(BOOL)animated
[super viewDidAppear:animated];
[[AppDelegate sharedInstance] setNavTitle:@"Title"];
//load your background image here
self.parentViewController.view.backgroundColor = [UIColor colorWithPatternImage:[UIImage imageNamed:@"FirstViewBackground"]];
self.tableView.backgroundColor = [UIColor clearColor];
【讨论】:
【参考方案4】:好的,我已经解决了我的情况。
我在 Container View 中有一些自定义 UIView。容器视图的背景颜色(可能我不小心这样做了)设置为白色。在过渡之间,我看到白线闪烁(有时是随机的)。当我将容器的视图颜色设置为默认值时,过渡闪烁消失了。
【讨论】:
以上是关于在屏幕之间切换时边缘闪烁ios7的主要内容,如果未能解决你的问题,请参考以下文章
在 iOS7 中边缘滑动时,使键盘与 UIView 同步动画