热更新demo

frontPageBannerCell.m 5.1KB

    // // frontPageBannerCell.m // ThePaperBase // // Created by scar1900 on 15/8/20. // Copyright (c) 2015年 scar1900. All rights reserved. // #import "frontPageBannerCell.h" @interface frontPageBannerCell() <asyncImageDelegate> { NSInteger isSuccess; } @property(nonatomic, strong)AsyncImageView *bannerView; @property(nonatomic, strong)UITapGestureRecognizer *blankTap; @property(nonatomic, strong)UITapGestureRecognizer *tap; @property(nonatomic, strong)UIPanGestureRecognizer *panGesture; @property(nonatomic, strong)NSString *clickUrl; @end @implementation frontPageBannerCell @synthesize delegate; @synthesize adUrl = _adUrl; @synthesize clickUrl; - (instancetype)initWithFrame:(CGRect)frame{ self = [super initWithFrame:frame]; if (self) { self.backgroundColor = [UIColor clearColor]; self.isReady = NO; self.isHaveShow = NO; self.showing = NO; [self addSubview:self.bannerView]; self.blankTap = [[UITapGestureRecognizer alloc]initWithTarget:self action:@selector(blankTap:)]; [self addGestureRecognizer:self.blankTap]; self.tap = [[UITapGestureRecognizer alloc]initWithTarget:self action:@selector(tap:)]; [self.bannerView addGestureRecognizer:self.tap]; self.panGesture = [[UIPanGestureRecognizer alloc]initWithTarget:self action:@selector(pan:)]; [self.bannerView addGestureRecognizer:self.panGesture]; isSuccess = -1; } return self; } - (UIView*)bannerView { if (!_bannerView) { _bannerView = [AsyncImageView new]; _bannerView.imageView.userInteractionEnabled = YES; _bannerView.isHaveWaterPrint = NO; _bannerView.backgroundColor = [UIColor clearColor]; _bannerView.hidden = YES; _bannerView.delegate = self; } return _bannerView; } - (void)setAdUrl:(NSString *)url { if ([_adUrl isEqualToString:url]) { return; } _adUrl = url; if (isBlankString(url)) { [self.bannerView setHidden:YES]; if ([self.delegate respondsToSelector:@selector(loadAdFailed:)]) { [self.delegate loadAdFailed]; self.isReady = NO; } return; } TPLOG(@"%@",url); __weak typeof(self) weakSelf = self; [Remote doXmlRequestWithBlock:url completion:^(BOOL success, NSString *message, id responseData) { if (success) { isSuccess = 1; [self.bannerView setHidden:NO]; TPLOG(@"=======ad data is ready!=========%@",weakSelf.description); if ([weakSelf.delegate respondsToSelector:@selector(loadAdSuccess)]) { [weakSelf.delegate loadAdSuccess]; } NSString *imageUrl = responseData[@"creative"]; NSString *imageID = getImageNameFromURL(imageUrl); weakSelf.bannerView.imageUrl = imageUrl; weakSelf.bannerView.imageId = imageID; NSString *click = responseData[@"click"]; if ([click isMatchedByRegex:@"__IDFA__"]) { [click stringByReplacingOccurrencesOfString:@"__IDFA__" withString:[TPUserDefault instance].IDFA]; } weakSelf.clickUrl = click; NSString *impressionUrl = responseData[@"Impression"]; if (!isBlankString(impressionUrl)) { if ([impressionUrl isMatchedByRegex:@"__IDFA__"]) { [impressionUrl stringByReplacingOccurrencesOfString:@"__IDFA__" withString:[TPUserDefault instance].IDFA]; } [Remote doSimpleAction:0 requestUrl:impressionUrl]; } }else { isSuccess = 0; [self.bannerView setHidden:YES]; TPLOG(@"========load AD failed!========%@",weakSelf.description); if ([weakSelf.delegate respondsToSelector:@selector(loadAdFailed)]) { [weakSelf.delegate loadAdFailed]; self.isReady = NO; } } }]; } - (void)loadImageSuccess { self.isReady = YES; } - (void)blankTap:(UITapGestureRecognizer*)blankTap { if ([self.delegate respondsToSelector:@selector(dismissAd:bannerView:)]) { [self.delegate dismissAd:self.index bannerView:self]; } } - (void)tap:(UITapGestureRecognizer*)gesture { remotePushBO *pushBO = remotePushBO.new; pushBO.linkType = @"6"; pushBO.contId = self.clickUrl; pushBO.isComeFromRemote = @"0"; if ([self.delegate respondsToSelector:@selector(clickAdd:index:bannerView:)]) { [self.delegate clickAdd:pushBO index:self.index bannerView:self]; } } - (void)pan:(UIPanGestureRecognizer*)swipe { if ([self.delegate respondsToSelector:@selector(dismissAd:bannerView:)]) { [self.delegate dismissAd:self.index bannerView:self]; } } - (void)layoutSubviews { [self.bannerView makeConstraints:^(MASConstraintMaker *make) { make.top.mas_equalTo(self.top).offset(self.naviHeight); make.right.equalTo(self.right); make.left.equalTo(self.left); make.bottom.equalTo(self.bottom); }]; [super layoutSubviews]; } @end