在iOS中以编程方式显示ADS InterstitialAd的屏幕截图提供黑色图像

时间:2013-02-25 07:16:48

标签: ios objective-c xcode ipad iad

当我在_parentView(UIView)上展示iAd并创建此_parentView的图片时。

我在UIImageView上显示此图像(resulImage),然后此图像为空白(全黑)。

如何以编程方式获取iAd的屏幕截图?

- (id)initWithView:(UIView *)currentView
{
    self = [super init];
    if (self) {
        _parentView = currentView;
        self.interstitial = [[ADInterstitialAd alloc] init];
        self.interstitial.delegate = self;
    }
    return self;
}

- (void)interstitialAdDidLoad:(ADInterstitialAd *)interstitialAd
{
   [interstitialAd presentInView:_parentView];
   [self takeScreenshot];
}

- (void)takeScreenshot
{
    CGRect      rect = CGRectMake(0, 0, _parentView.frame.size.width, _parentView.frame.size.height);

    UIGraphicsBeginImageContext(rect.size);
    [_parentView.layer renderInContext:UIGraphicsGetCurrentContext()];
    UIImage *resultingImage = UIGraphicsGetImageFromCurrentImageContext();
    UIGraphicsEndImageContext();
}

1 个答案:

答案 0 :(得分:0)

您是否检查过该设备是否为iPad? 基于Official Apple document

好像你正确地做了。你可能会检查是否

  [interstitialAd presentInView:_parentView];
在继续之前,

返回true的假。

如果这没有帮助,请尝试使用委托功能:

- (void)interstitialAd:(ADInterstitialAd *)interstitialAd didFailWithError:(NSError *)error;

如果它返回任何错误。

编辑: 尝试使用密钥窗口中的根视图控制器。它对我有用。

if([self.interstitial presentInView:_view])
{ NSLog(@"Able to present in view"); }
else
{ [self.interstitial presentFromViewController:[UIApplication sharedApplication].keyWindow.rootViewController]; }