iOS: универсальный шаблон приложения, поддерживающий iAds и поворот экрана - PullRequest
0 голосов
/ 26 марта 2011

Я пытаюсь создать универсальный шаблон приложения для iOS, который прозрачно обрабатывает iAds и поворот экрана.

т.е. вместо того, чтобы использовать UIViewController для каждого нового проекта, я вместо этого буду использовать свой собственный iAdVC (который будет подклассом UIViewController). Это позволит беспрепятственно обрабатывать iAds и передавать оставшееся пространство окна пользователю.

Я пытаюсь это сделать: контроллер представления содержит uberView, который содержит {adView, представление содержимого}.

всякий раз, когда реклама появляется и исчезает, анимируется {adView, view content}:

  • представление контента, слегка сдавливая верхнюю часть фрейма, чтобы освободить место для моего iAd,
  • и одновременно исчезнуть в объявлении вдоль верхней части.

    также, каждый раз, когда устройство вращается, размеры должны быть изменены.

У меня действительно тупая проблема, когда первое объявление показывается, я помещаю его в верхнюю часть экрана и сдавливаю оставшийся фрейм контента, чтобы освободить место для него.

но если я изменю фрейм представления контента, я больше не могу нажимать на объявление. и если я этого не сделаю, представление контента не помещается в своем окне,

http://d.pr/ZyQG

- (void) bannerViewDidLoadAd: (ADBannerView *) banner 
{   
    bool isLandscape = UIInterfaceOrientationIsLandscape( self.interfaceOrientation );
    NSString * contentSize = isLandscape ? ADBannerContentSizeIdentifierLandscape : ADBannerContentSizeIdentifierPortrait ;

    [self.adBannerView setCurrentContentSizeIdentifier: contentSize];

    CGSize bannerSize = [ADBannerView sizeFromBannerContentSizeIdentifier: contentSize];
    self.adBannerView.frame = CGRectMake(0, 0, bannerSize.width, bannerSize.height);

    // resize content frame & fade ad in        
    CGRect newContentFrame = uberView.bounds;
    newContentFrame.size.height -= bannerSize.height;
    newContentFrame.origin.y += bannerSize.height;   

    NSLog(@"%@", NSStringFromCGRect(newContentFrame)); // {{0, 50}, {320, 430}}
    if (1) // 0 works
        self.contentView.frame = newContentFrame; // NOW CANT CLICK AD
}

Ответы [ 2 ]

0 голосов
/ 04 апреля 2011

https://github.com/p-i-/iAdUniversalTemplate

Это шаблон с поддержкой iAd-rotatey без универсального приложения XIB, для которого требуется минимальный целевой показатель iOS 4.2

.

Потребовалось много усилий, а именно iAd - невозможно нажать на баннер

Но сейчас он в хорошей форме.

0 голосов
/ 26 марта 2011

Минимальная цель развертывания
Первый вопрос: Какова разумная цель минимального развертывания? Поскольку это универсальное приложение, нам следует использовать iOS 4.2, поскольку это первая версия, объединенная между iPhone и iPad.

Возникает вопрос: какую долю кликающих по рекламе клиентов мы теряем? Например, стоит ли поддерживать 4.0 только для того, чтобы получить дополнительные 15% клиентов?

http://insights.chitika.com/2011/ios-update-ipads-iphones-running-high-rate-of-ios-4/ показывает, что вы по-прежнему выбираете 80% кликающих по рекламе клиентов, если выбираете 4.2.

Очевидно, что эта доля будет увеличиваться со временем, поэтому я остановлюсь на самом простом варианте кодирования, а не на том, чтобы выжать из рынка все до последней копейки.

Это имеет дополнительное преимущество:

// Supported sizes of banner ads available from ad server. Dimensions are in points, not pixels.
// The dimensions are part of the value names to assist with design-time planning for view layout.
extern NSString * const ADBannerContentSizeIdentifier320x50 __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_NA,__MAC_NA,__IPHONE_4_0,__IPHONE_4_2);
extern NSString * const ADBannerContentSizeIdentifier480x32 __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_NA,__MAC_NA,__IPHONE_4_0,__IPHONE_4_2);
extern NSString * const ADBannerContentSizeIdentifierPortrait __OSX_AVAILABLE_STARTING(__MAC_NA,__IPHONE_4_2);
extern NSString * const ADBannerContentSizeIdentifierLandscape __OSX_AVAILABLE_STARTING(__MAC_NA,__IPHONE_4_2);

т.е. мы можем использовать новые символы, которые являются общими (т.е. работают как для iPhone, так и для iPad)

strPortrait = ADBannerContentSizeIdentifierPortrait; // ADBannerContentSizeIdentifier320x50;
strLandscape = ADBannerContentSizeIdentifierLandscape; // ADBannerContentSizeIdentifier480x32;

Баннер может быть горизонтальным или вертикальным , поэтому вам необходимо загрузить:

[self.adBannerView setRequiredContentSizeIdentifiers:
    [NSSet setWithObjects: strPortrait, strLandscape, nil]
];  

Затем, когда экран поворачивается на 90 °, AdBannerView необходимо указать:

[self.adBannerView setCurrentContentSizeIdentifier: isLandscape ? strLandscape : strPortrait ];

Сразу после того, как это установлено, вы можете запросить self.adBannerView.frame и получить новый размер

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...