ios - 关闭 UIViewController 时闪烁

标签 ios objective-c iphone uiviewcontroller

我有一个 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 似乎试图进入纵向模式而不是横向模式。这是它的屏幕截图:

之前: Before

之后: After

最佳答案

您的根本问题是动画需要时间

为 iOS 编程实际上并不那么容易。假设您需要一个动画来摆脱 View Controller 。很好。

您必须使用完成 block - 您必须等待动画关闭,并且只有这样(在完成 block 中)才能继续其他事件。

简而言之,在关闭 View Controller 时,您必须在所有情况下使用完成 block 。

关于ios - 关闭 UIViewController 时闪烁,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33341732/

相关文章:

ios - 如何在 iOS 设备上测试 Cordova/ionic 应用程序?

iphone - iOS变量名和内存管理

html - 带有表情符号的HTML字符串Swift

ios - Swift FIRMessaging 推送通知 token 重置

Objective-C 复制 View

ios - ld : library not found for -lGoogleAdMobAds

ios - 在 Swift 中运行的目标成员资格的编译器条件?

ios - 在 NSProxy 中包装一个 UITableViewController

ios - 在 App Delegate 中设置第一个 View Controller

iphone - 在 iPhone 上查看文件有哪些方法?