CGAffineTransformInvert:奇异矩阵错误

Posted

技术标签:

【中文标题】CGAffineTransformInvert:奇异矩阵错误【英文标题】:CGAffineTransformInvert: singular matrix Error 【发布时间】:2014-09-14 20:15:43 【问题描述】:

我在 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

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

<Error>: CGAffineTransformInvert: singular matrix.

如果我尝试在模拟器 (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*

但是我有委托并且我实现了didFailToReceiveAdWithError。在真正的 iPhone 上它可以工作......

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

【问题讨论】:

【参考方案1】:

最可能的原因是此处的矩形之一为零。你不能反转零矩阵(这是一个技术细节,你真的不应该关心;我只是想说为什么会出现这个错误)。

application(didFinishLaunchingWithOptions:) 很早就被调用了,框架可能还没有设置。您可能希望在根视图控制器的viewDidLoad 中进行这项工作(如果需要,可能修复viewWillAppear 中的框架)(如果您还没有子类,您可能需要为此创建一个子类)。

【讨论】:

感谢您的回答,但我遇到了这两个错误,与我的代码放在哪里无关(我尝试了 ViewDidLoad、ViewWillAppear 和 ViewDidAppear)。我尝试打印所有坐标,没有一个零值。所以我相信你,我不必关心它:)【参考方案2】:

将此添加到您的 viewController 类中。用您的横幅属性名称替换 adBanner

-(void)viewDidDisappear:(BOOL)animated
    [adBanner removeFromSuperview];
    adBanner.delegate = nil;
    adBanner = nil;

【讨论】:

以上是关于CGAffineTransformInvert:奇异矩阵错误的主要内容,如果未能解决你的问题,请参考以下文章

Zabbix怎么监控奇安信网神防火墙

OpenCV,若有奇数行或奇数列,进行频谱裁剪

51nod 2106位运算(异或)一个奇数次

51nod 2106位运算(异或)一个奇数次

币奇数字货币投资技巧币奇怎么玩

js中给定一个整数数组,找到出现奇数次的整数始终只有一个整数出现奇数次