2013-07-13 59 views
1

我有一个奇怪的问题。 iAds工作。只要我初始化一个UIButton(使用“[self initCloseAdButtonWithFrame:_frame];”)iAds停止工作,而按钮在正确的位置初始化。此代码根据广告的可用性将广告横幅放入和滑出。iOS - 初始化UIButton强制iAd消失

为什么closeButton的初始化会破坏广告功能?

ViewController.m

#pragma mark - Ads 

-(void)initiAdBanner 
{ 

    DLog(@""); 


    if (!self.iAdBannerView) 
    { 
     CGRect rect = CGRectMake(0, self.view.frame.size.height, 0, 0); 
     self.iAdBannerView = [[ADBannerView alloc]initWithFrame:rect]; 
     self.iAdBannerView.delegate = self; 
     self.iAdBannerView.hidden = TRUE; 
     [self.view addSubview:self.iAdBannerView]; 
    } 
} 




#pragma mark - ADBanner delegate methods - 

// Called before the add is shown, time to move the view 
- (void)bannerViewWillLoadAd:(ADBannerView *)banner 
{ 
    DLog(@"iAd load"); 
    [self hideBanner:self.gAdBannerView]; 
    [self showBanner:self.iAdBannerView]; 
} 

// Called when an error occured 
- (void)bannerView:(ADBannerView *)banner didFailToReceiveAdWithError:(NSError *)error 
{ 
    DLog(@"iAd error: %@", error); 
    [self hideBanner:self.iAdBannerView]; 

    GADRequest *request = [GADRequest request]; 
    request.testDevices = [NSArray arrayWithObjects:GAD_SIMULATOR_ID, nil]; 

    [self.gAdBannerView loadRequest:request]; 
} 







#pragma mark - Banner hide and show - 

// Hide the banner by sliding down 
-(void)hideBanner:(UIView*)banner 
{ 
    if (banner && ![banner isHidden]) 
    { 
     [UIView beginAnimations:@"hideBanner" context:nil]; 
     banner.frame = CGRectOffset(banner.frame, 0, banner.frame.size.height); 
     [UIView commitAnimations]; 
     banner.hidden = TRUE; 

     if(closeButton){ 

      [closeButton setHidden:TRUE]; 
     } 

    } 
} 

// Show the banner by sliding up 
-(void)showBanner:(UIView*)banner 
{ 
    if (banner && [banner isHidden]) 
    { 
     CGRect _frame2 = CGRectOffset(banner.frame, 0, -banner.frame.size.height); 
     CGRect _frame = CGRectOffset(banner.frame, 0, -banner.frame.size.height); 
     [self initCloseAdButtonWithFrame:_frame]; 

     [UIView beginAnimations:@"showBanner" context:nil]; 
     banner.frame = _frame2; 
     [UIView commitAnimations]; 
     banner.hidden = FALSE; 


    } 
} 

//button initialize 


-(void)initCloseAdButtonWithFrame:(CGRect)frame{ 

    DLog(@""); 

    closeButton = [UIButton buttonWithType:UIButtonTypeCustom]; 

    [closeButton addTarget:self 
        action:@selector(inAppPurchase) 
      forControlEvents:UIControlEventTouchUpInside]; 

    UIImage *_closeImage = [UIImage imageNamed:@"closeButton.png"]; 

    UIImage *closeImage = [UIImage imageWithCGImage:_closeImage.CGImage scale:_closeImage.scale orientation:UIImageOrientationDown]; 

    [closeButton setBackgroundImage:closeImage forState:UIControlStateNormal]; 
    [closeButton setBackgroundImage:closeImage forState:UIControlStateHighlighted]; 

    closeButton.frame = CGRectMake(frame.size.width - closeImage.size.width, -5 + self.view.frame.size.height -frame.size.height - closeImage.size.height, closeImage.size.width, closeImage.size.height); 

    [self.view insertSubview:closeButton atIndex:2]; 
    [closeButton setHidden:FALSE]; 
} 

-(void)inAppPurchase{ 

    DLog(@""); 

} 

ShowBanner经由IAD设备委托调用。在Show banner中,该按钮被初始化。只有在按钮未初始化的情况下,代码才能工作(广告显示)。

特别是,一切正常,直到按钮被添加到子视图。

+0

将按钮添加到子视图会使广告消失 – stackOverFlew

+0

此问题与广告暴民无关,该标记不应置于问题中。 –

+0

我不同意,注意代码:self.gAdBannerView - gAdBannerView是admob – stackOverFlew

回答

0

问题是 - 您使用相同的框架来显示按钮和横幅。结果,按钮完全覆盖了它。在showBanner函数内部减少_frame.size.height,您将看到横幅。

+0

你好,谢谢你的答案,但我不认为这是问题 - 我不是直接框架按钮的横幅框架。相反,我使用横幅的坐标来决定我放置按钮的位置(我从那里抵消了按钮)。如果我使用随机CGRect,例如{10,10,10,10},则会出现同样的问题。 – stackOverFlew

+0

检查图像大小?播放比例值从0到1. –

+0

是的,图像尺寸也很好。问题是当我将它作为子视图添加时。无论它的大小或位置如何,iAd都会消失。此外,我还没有在真实的设备上测试过。这可能是问题吗? – stackOverFlew