CGAffineTransformInvert:奇异矩阵错误

And*_*dré 10 ios iad swift swift2

我在Xcode中创建了Universal App(单一视图).因为我想iAd在每个视图上都有横幅,我将此代码添加到AppDelegate文件中:

func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool
{
    if var root = self.window?.rootViewController
    {
        let contentFrame = UIScreen.mainScreen().bounds
         var _banner = ADBannerView(adType: ADAdType.Banner)

        _banner.frame=CGRectMake(0, contentFrame.height - _banner.frame.height, _banner.frame.width, _banner.frame.height)
        _banner.delegate = self
        root.view.addSubview(_banner)
    }

    return true
}
Run Code Online (Sandbox Code Playgroud)

在真正的iPhone(iOS 8)上一切正常(横幅出现在每个视图上)但我收到此错误:

<Error>: CGAffineTransformInvert: singular matrix.
Run Code Online (Sandbox Code Playgroud)

如果我尝试在模拟器(iOS 8)上运行此应用程序,行为是相同的.一切正常,我得到相同的错误,但我得到:*ADBannerView:

 Unhandled error (no delegate or delegate does not implement didFailToReceiveAdWithError:):
 Error Domain=ADErrorDomain Code=7 "The operation couldn’t be completed. Ad was unloaded from 
this banner" UserInfo=0x7b83bf30 {ADInternalErrorCode=7, ADInternalErrorDomain=ADErrorDomain, 
NSLocalizedFailureReason=Ad was unloaded from this banner}*
Run Code Online (Sandbox Code Playgroud)

但我有代表,我实施了didFailToReceiveAdWithError.在真正的iPhone上,它有效......

我的问题是如何解决这两个特定错误?

Rob*_*ier 11

最可能的原因是这里的其中一个是零.你不能反转零矩阵(这是一个技术细节,你真的不应该关心;我只是想说明为什么这是你得到的错误).

application(didFinishLaunchingWithOptions:)被称为非常早,帧可能尚未设置.您可能希望在根视图控制器中执行此工作viewDidLoad(可能需要修复框架viewWillAppear)(如果您还没有,则可能需要为此创建子类).