싱글 톤을 통해 내 아이디를 처리하려고합니다. 여러 배너에서이 배너를 사용하고 있기 때문입니다. 이제는 광고가 표시되거나 오류가 발생했을 때 각보기 컨트롤러에서 다르게 이동하기 때문에 이러한 객체가 저장하는 내용을 혼동합니다. 이 initalized 방법iOS : iAd Singleton Confusion
+ (MySingleton *)sharedInstance {
static dispatch_once_t once;
static MySingleton * sharedInstance;
dispatch_once(&once, ^{
sharedInstance = [[self alloc] init];
});
return sharedInstance;
}
- (id)init
{
if (self = [super init]) {
if ([ADBannerView instancesRespondToSelector:@selector(initWithAdType:)]) {
self.bannerView = [[ADBannerView alloc] initWithAdType:ADAdTypeBanner];
} else {
self.bannerView = [[ADBannerView alloc] init];
}
}
return self;
}
그리고 여기에 : 여기에 내 코드 :
싱글
- (void)viewWillAppear:(BOOL)animated {
[super viewWillAppear:animated];
//iAd
if(![[NSUserDefaults standardUserDefaults] objectForKey:kInAppPurchaseNoAds]){
self.bannerView = [MySingleton sharedInstance].bannerView;
self.bannerView.delegate = self;
self.bannerView.frame = CGRectOffset(self.bannerView.frame, 0, self.view.frame.size.height);
[self.view addSubview:self.bannerView];
}
}
그리고 위임 방법 : 이제
- (void)showBanner
{
if(!self.isBannerVisible){
[self.view layoutIfNeeded];
[UIView animateWithDuration:0.5
animations:^{
//Restore the constraint
self.mainContainerToSuperviewConstraint.constant = 50;
//Move the banner on
self.bannerView.frame = CGRectOffset(self.bannerView.frame, 0, -50);
[self.view layoutIfNeeded];
} completion:^(BOOL finished) {
self.isBannerVisible = YES;
}];
}
}
- (void)hideBanner
{
if(self.isBannerVisible){
[self.view layoutIfNeeded];
[UIView animateWithDuration:0.5
animations:^{
//Restore the constraint
self.mainContainerToSuperviewConstraint.constant = 0;
//Move the banner off
self.bannerView.frame = CGRectOffset(self.bannerView.frame, 0, self.bannerView.frame.size.height);
[self.view layoutIfNeeded];
} completion:^(BOOL finished) {
self.isBannerVisible = NO;
}];
}
}
- (void)bannerViewDidLoadAd:(ADBannerView *)banner
{
[self showBanner];
}
- (void)bannerView:(ADBannerView *)banner didFailToReceiveAdWithError:(NSError *)error
{
[self hideBanner];
}
내가 혼란 스러워요 것입니다 , 사용자가 iAd와 함께 다른보기에있는 경우 배너보기의 위치를 다시 확인해야합니까? 눈에 보이는 배너와 함께 화면 하단에서 75을 말하며 50이 아니라고합시다. 또는이 위치가 AdBannerView에 영향을 미치지 않고 각 클래스의 단일 객체에만 영향을 미칩니 까? 내 말은 그가 다른보기에 있었고 코드에서 배너를 아래쪽에서 75 픽셀로 이동 시켰습니다.이 75 픽셀이 내 싱글 톤 AdView에 저장되어 있습니까? 그래서 원래의 견해는 지금 50 세가 아니라 75 세의 기치를 가졌습니까?
iAd BannerView를 싱글 톤으로 만들 것을 권장하지 않습니까? 나는 3 개의 뷰 컨트롤러에 iAd를 보여 주며, 문제없이 매번 인스턴스화 할 수 있습니다. – MichiZH