我有一个 UIViewController
,我用它来显示视频广告。一旦用户点击关闭广告按钮,我就会关闭 View Controller ,但在它被关闭并显示父 View 后不久就会出现闪烁。
这是我在代码中所做的:
@interface myController:UIViewController
@end
static myController* vc = [[myController alloc] init];
@implementation myViewController
-(void) showController
{
[currentViewController presentViewController : self animated : NO completion : nil];
}
-(void) hideController
{
[self dismissViewControllerAnimated : NO completion : nil];
}
-(void) startPlaying
{
dispatch_async(dispatch_get_main_queue(), ^{
[vc showController];
//call the method which will play the video.
});
}
-(void) viewClosed
{
dispatch_async(dispatch_get_main_queue(), ^{
[vc hideController];
});
}
@end
无法获取屏幕截图,因为它发生得很快。
我已经尝试使呈现的 View 透明,因为我认为在关闭后,闪烁是由于关闭视频广告然后尝试关闭呈现 View Controller 后的延迟造成的。它有效,但在解雇后,父 View 似乎试图进入纵向模式而不是横向模式。这是它的屏幕截图:
最佳答案
您的根本问题是动画需要时间。
为 iOS 编程实际上并不那么容易。假设您需要一个动画来摆脱 View Controller 。很好。
您必须使用完成 block - 您必须等待动画关闭,并且只有这样(在完成 block 中)才能继续其他事件。
简而言之,在关闭 View Controller 时,您必须在所有情况下使用完成 block 。
关于ios - 关闭 UIViewController 时闪烁,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33341732/