我在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.
如果我尝试在Simulator(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上它可以工作......
我的问题是如何解决这两个特定错误?
答案 0 :(得分:10)
最可能的原因是这里的其中一个是零。你不能反转零矩阵(这是一个技术细节,你真的不应该关心;我只是想说出为什么这是你得到的错误。)
application(didFinishLaunchingWithOptions:)
很早就被调用了,帧可能还没有设置好。您可能希望在根视图控制器的viewDidLoad
(可能需要修复viewWillAppear
中的框架)中执行此工作(如果您不这样做,可能需要创建一个子类)已经有一个)。
答案 1 :(得分:0)
将此添加到viewController类中。将adBanner替换为您的横幅属性名称
-(void)viewDidDisappear:(BOOL)animated{
[adBanner removeFromSuperview];
adBanner.delegate = nil;
adBanner = nil;
}