BuWanVideo2.0.xcodeproj/project.pbxproj
@@ -389,6 +389,7 @@ 7BFBC6861D6705AB0058FFEB /* SettingController.m in Sources */ = {isa = PBXBuildFile; fileRef = 7BFBC6821D6705AB0058FFEB /* SettingController.m */; }; 7BFBC6901D6705DD0058FFEB /* StorageSpaceTableViewCell.m in Sources */ = {isa = PBXBuildFile; fileRef = 7BFBC68C1D6705DD0058FFEB /* StorageSpaceTableViewCell.m */; }; 7BFBC6911D6705DD0058FFEB /* StorageSpaceTableViewCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = 7BFBC68D1D6705DD0058FFEB /* StorageSpaceTableViewCell.xib */; }; 8B78416D2AF4F9C100F1D7EB /* RecommendAdView.m in Sources */ = {isa = PBXBuildFile; fileRef = 8B78416C2AF4F9C100F1D7EB /* RecommendAdView.m */; }; 8BBDBCD72A739F6600EBDB45 /* DYDramaVideoController.m in Sources */ = {isa = PBXBuildFile; fileRef = 8BBDBCD52A739F6600EBDB45 /* DYDramaVideoController.m */; }; AD73C5F51D4DE7DD0060437E /* GTMBase64.m in Sources */ = {isa = PBXBuildFile; fileRef = AD73C5F31D4DE7DD0060437E /* GTMBase64.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; ADF0EF921D60C36F009310C9 /* WebKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = ADF0EF911D60C36F009310C9 /* WebKit.framework */; }; @@ -1044,6 +1045,8 @@ 7BFBC68B1D6705DD0058FFEB /* StorageSpaceTableViewCell.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = StorageSpaceTableViewCell.h; sourceTree = "<group>"; }; 7BFBC68C1D6705DD0058FFEB /* StorageSpaceTableViewCell.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = StorageSpaceTableViewCell.m; sourceTree = "<group>"; }; 7BFBC68D1D6705DD0058FFEB /* StorageSpaceTableViewCell.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = StorageSpaceTableViewCell.xib; sourceTree = "<group>"; }; 8B78416B2AF4F9B700F1D7EB /* RecommendAdView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = RecommendAdView.h; sourceTree = "<group>"; }; 8B78416C2AF4F9C100F1D7EB /* RecommendAdView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = RecommendAdView.m; sourceTree = "<group>"; }; 8BBDBCD52A739F6600EBDB45 /* DYDramaVideoController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = DYDramaVideoController.m; sourceTree = "<group>"; }; 8BBDBCD62A739F6600EBDB45 /* DYDramaVideoController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DYDramaVideoController.h; sourceTree = "<group>"; }; AD73C5EC1D4DD7E50060437E /* Common.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Common.h; sourceTree = "<group>"; }; @@ -1890,6 +1893,8 @@ 70ED36BF2662382F00E51E79 /* Cell */ = { isa = PBXGroup; children = ( 8B78416C2AF4F9C100F1D7EB /* RecommendAdView.m */, 8B78416B2AF4F9B700F1D7EB /* RecommendAdView.h */, 70ED36C326623CCB00E51E79 /* 01.jpg */, 70ED36C426623CCB00E51E79 /* 02.jpg */, 70ED36C526623CCB00E51E79 /* 03.jpg */, @@ -3097,6 +3102,7 @@ 7B1FF0DD1D670B8800E6C207 /* attentionView.m in Sources */, 70D5934525EA1FAE00438F1A /* PPTVController.m in Sources */, 1884A6031E545D4900548480 /* PopoverViewCell.m in Sources */, 8B78416D2AF4F9C100F1D7EB /* RecommendAdView.m in Sources */, 7030BAA326A40201003050E0 /* BuyVipController.m in Sources */, 7BFBC6461D6703E40058FFEB /* WebControllerView.m in Sources */, 18BC12B11EDEA87D001E2FB0 /* LiveListTableViewCell.m in Sources */, @@ -3257,7 +3263,7 @@ CODE_SIGN_ENTITLEMENTS = BuWanVideo2.0/BuWanVideo2.0.entitlements; CODE_SIGN_IDENTITY = "Apple Development"; CODE_SIGN_STYLE = Automatic; CURRENT_PROJECT_VERSION = 99; CURRENT_PROJECT_VERSION = 100; DEVELOPMENT_TEAM = 98HSDT7AP4; ENABLE_BITCODE = NO; FRAMEWORK_SEARCH_PATHS = ( @@ -3301,7 +3307,7 @@ "${SRCROOT}", ); INFOPLIST_FILE = BuWanVideo2.0/Info.plist; IPHONEOS_DEPLOYMENT_TARGET = 9.0; IPHONEOS_DEPLOYMENT_TARGET = 10.0; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; LIBRARY_SEARCH_PATHS = ( "$(inherited)", @@ -3319,7 +3325,7 @@ "$(PROJECT_DIR)/BuWanVideo2.0/DKADSet_iOS_SDK_1.2.0_iphoneOS", "$(PROJECT_DIR)/BuWanVideo2.0/GDT_iOS_SDK", ); MARKETING_VERSION = 3.1.10; MARKETING_VERSION = 3.1.11; ONLY_ACTIVE_ARCH = YES; OTHER_LDFLAGS = ( "$(inherited)", @@ -3408,7 +3414,7 @@ CODE_SIGN_ENTITLEMENTS = BuWanVideo2.0/BuWanVideo2.0.entitlements; CODE_SIGN_IDENTITY = "Apple Development"; CODE_SIGN_STYLE = Automatic; CURRENT_PROJECT_VERSION = 99; CURRENT_PROJECT_VERSION = 100; DEVELOPMENT_TEAM = 98HSDT7AP4; ENABLE_BITCODE = NO; FRAMEWORK_SEARCH_PATHS = ( @@ -3452,7 +3458,7 @@ "${SRCROOT}", ); INFOPLIST_FILE = BuWanVideo2.0/Info.plist; IPHONEOS_DEPLOYMENT_TARGET = 9.0; IPHONEOS_DEPLOYMENT_TARGET = 10.0; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; LIBRARY_SEARCH_PATHS = ( "$(inherited)", @@ -3470,7 +3476,7 @@ "$(PROJECT_DIR)/BuWanVideo2.0/DKADSet_iOS_SDK_1.2.0_iphoneOS", "$(PROJECT_DIR)/BuWanVideo2.0/GDT_iOS_SDK", ); MARKETING_VERSION = 3.1.10; MARKETING_VERSION = 3.1.11; ONLY_ACTIVE_ARCH = NO; OTHER_LDFLAGS = ( "$(inherited)", BuWanVideo2.0/AppDelegate.m
@@ -57,9 +57,9 @@ @interface AppDelegate ()<GDTSplashAdDelegate, BUSplashAdDelegate, UINavigationControllerDelegate> @property (strong,nonatomic) GDTSplashAd *splash; @property (strong,nonatomic) GDTSplashAd *gdtSplash; @property (nonatomic, strong) BUSplashAd *splashAd; @property (nonatomic, strong) BUSplashAd *csjSplashAd; @property (nonatomic, strong) RecommendMainController *vcRecommend; @@ -161,25 +161,25 @@ CGFloat viewHeight = 0.0; if (width == 320.0f && height<=480.0f) { // iphone4 iphone4s 上的default图片 _splash.backgroundColor=[UIColor colorWithPatternImage:[UIImage imageNamed:@"320x480"]]; _gdtSplash.backgroundColor=[UIColor colorWithPatternImage:[UIImage imageNamed:@"320x480"]]; //imageview.backgroundColor = [UIColor colorWithPatternImage:[UIImage imageNamed:@"320"]]; viewHeight = 55; }else if (width ==320.0f && height==568.0f) { // iphone5 上的default图片 _splash.backgroundColor=[UIColor colorWithPatternImage:[UIImage imageNamed:@"320x568"]]; _gdtSplash.backgroundColor=[UIColor colorWithPatternImage:[UIImage imageNamed:@"320x568"]]; //imageview.backgroundColor = [UIColor colorWithPatternImage:[UIImage imageNamed:@"320"]]; viewHeight = 55; } else if (width ==375.0f) { // iphone6 上的default图片 _splash.backgroundColor=[UIColor colorWithPatternImage:[UIImage imageNamed:@"375x667"]]; _gdtSplash.backgroundColor=[UIColor colorWithPatternImage:[UIImage imageNamed:@"375x667"]]; //imageview.backgroundColor = [UIColor colorWithPatternImage:[UIImage imageNamed:@"375"]]; viewHeight = 63; }else{ // iphone6 plus 上的default图片 _splash.backgroundColor = [UIColor colorWithPatternImage:[UIImage imageNamed:@"414x736"]]; _gdtSplash.backgroundColor = [UIColor colorWithPatternImage:[UIImage imageNamed:@"414x736"]]; //imageview.backgroundColor = [UIColor colorWithPatternImage:[UIImage imageNamed:@"414"]]; viewHeight = 69; } @@ -239,6 +239,7 @@ height = [UIScreen mainScreen].bounds.size.height*2/5; width = [UIScreen mainScreen].bounds.size.width*4/5; UITextView *textView=[[UITextView alloc] initWithFrame:CGRectMake(0, 50,width ,height)]; textView.backgroundColor = [UIColor whiteColor]; textView.editable=NO; textView.font = [UIFont systemFontOfSize:20.0]; textView.scrollEnabled = YES; @@ -251,8 +252,8 @@ if(buttonIndex ==0){ //拒绝 if (@available(iOS 10.0, *)) { UIAlertView *alertView = [[UIAlertView alloc] initWithTitle:@"" message:@"影视大全需要您同意后才能提供完整的服务" delegate:nil cancelButtonTitle:@"确定" otherButtonTitles:nil, nil]; [alertView show]; UIAlertView *_alertView = [[UIAlertView alloc] initWithTitle:@"" message:@"影视大全需要您同意后才能提供完整的服务" delegate:nil cancelButtonTitle:@"确定" otherButtonTitles:nil, nil]; [_alertView show]; } }else{ @@ -318,6 +319,7 @@ [[UITabBarItem appearance]setTitleTextAttributes:attr3 forState:UIControlStateNormal]; self.window.rootViewController = self.tabBarController; [self initSplashAdContanerView]; //判断用户是否已经获得Uid if ([[NSUserDefaults standardUserDefaults] objectForKey:@"uid"]!=nil) { //为Uid进行一个赋值,非常重要 @@ -338,7 +340,7 @@ } - (void) initFinish{ [self setupBUAdSDK]; [self loadAd]; } - (void)requestIDFA { @@ -491,18 +493,19 @@ return UIInterfaceOrientationMaskPortrait; } //穿山甲广告 - (void)setupBUAdSDK { - (void)loadAd { // [BUAdSDKManager set :NO]; // splash AD demo [self addSplashAD]; [self addCSJSplashAD]; } - (void) initCSJAd:(BUCompletionHandler)completionHandler{ BUAdSDKConfiguration *configuration=[BUAdSDKConfiguration configuration]; configuration.appID=@"5096047"; configuration.coppa = @(0); // configuration.coppa = @(0); configuration.secretKey=@"buwan_ios!@"; configuration.useMediation = YES; [BUAdSDKManager startWithAsyncCompletionHandler:^(BOOL success, NSError *error) { dispatch_async(dispatch_get_main_queue(),^{ [self initBUContent]; @@ -531,8 +534,8 @@ } #pragma mark - Splash - (void)addSplashAD { // 初始化广告的背景 - (void) initSplashAdContanerView{ CGRect frame = CGRectMake(0, 0, [UIScreen mainScreen].bounds.size.width, [UIScreen mainScreen].bounds.size.height - 100); self.viewBot = [[UIView alloc] initWithFrame:CGRectMake(0, 0, [UIScreen mainScreen].bounds.size.width, [UIScreen mainScreen].bounds.size.height)]; @@ -550,38 +553,32 @@ UIImageView *logos = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"375"]]; [views addSubview:logos]; logos.sd_layout.centerXEqualToView(views).centerYEqualToView(views).widthIs(KScreenW).heightIs(57); self.splashAd = [[BUSplashAd alloc] initWithSlotID:@"887379201" adSize:CGSizeMake(frame.size.width, frame.size.height)]; //self.splashAd.tolerateTimeout = 10; self.splashAd.delegate = self; self.splashAd.tolerateTimeout=3.0; float width = [UIScreen mainScreen].bounds.size.width; float height = [UIScreen mainScreen].bounds.size.height; UIImageView *imageview = [[UIImageView alloc] init]; UIImageView *bottomImageview = [[UIImageView alloc] init]; CGFloat viewHeight = 0.0; if (width == 320.0f && height<=480.0f) { // iphone4 iphone4s 上的default图片 _splash.backgroundColor=[UIColor colorWithPatternImage:[UIImage imageNamed:@"320x480"]]; _gdtSplash.backgroundColor=[UIColor colorWithPatternImage:[UIImage imageNamed:@"320x480"]]; //imageview.backgroundColor = [UIColor colorWithPatternImage:[UIImage imageNamed:@"320"]]; viewHeight = 55; }else if (width ==320.0f && height==568.0f) { // iphone5 上的default图片 _splash.backgroundColor=[UIColor colorWithPatternImage:[UIImage imageNamed:@"320x568"]]; _gdtSplash.backgroundColor=[UIColor colorWithPatternImage:[UIImage imageNamed:@"320x568"]]; //imageview.backgroundColor = [UIColor colorWithPatternImage:[UIImage imageNamed:@"320"]]; viewHeight = 55; } else if (width ==375.0f) { // iphone6 上的default图片 _splash.backgroundColor=[UIColor colorWithPatternImage:[UIImage imageNamed:@"375x667"]]; _gdtSplash.backgroundColor=[UIColor colorWithPatternImage:[UIImage imageNamed:@"375x667"]]; //imageview.backgroundColor = [UIColor colorWithPatternImage:[UIImage imageNamed:@"375"]]; viewHeight = 63; }else{ // iphone6 plus 上的default图片 _splash.backgroundColor = [UIColor colorWithPatternImage:[UIImage imageNamed:@"414x736"]]; _gdtSplash.backgroundColor = [UIColor colorWithPatternImage:[UIImage imageNamed:@"414x736"]]; //imageview.backgroundColor = [UIColor colorWithPatternImage:[UIImage imageNamed:@"414"]]; viewHeight = 69; } @@ -589,12 +586,9 @@ // _splash.backgroundColor=[UIColor colorWithPatternImage:[UIImage imageNamed:@"1125x2436"]]; //imageview.backgroundColor = [UIColor colorWithPatternImage:[UIImage imageNamed:@"414"]]; } imageview.image = [UIImage imageNamed:@"375"]; bottomImageview.image = [UIImage imageNamed:@"375"]; UIWindow *keyWindow = self.window; //self.startTime = CACurrentMediaTime(); [self.splashAd loadAdData]; //[keyWindow.rootViewController.view addSubview:self.splashAdView]; CGFloat screenH = [[UIScreen mainScreen] bounds].size.height; @@ -603,23 +597,31 @@ _bottomView = [[UIView alloc] initWithFrame:CGRectMake(0, screenH - 100, KScreenW, 100)]; _bottomView.backgroundColor = [UIColor whiteColor]; imageview.frame = CGRectMake(0, 21.5, _bottomView.frame.size.width, 57); [_bottomView addSubview:imageview]; bottomImageview.frame = CGRectMake(0, 21.5, _bottomView.frame.size.width, 57); [_bottomView addSubview:bottomImageview]; [keyWindow addSubview:self.bottomView]; } //self.splashAd.rootViewController = keyWindow.rootViewController; #pragma mark - Splash - (void)addCSJSplashAD { CGRect frame = CGRectMake(0, 0, [UIScreen mainScreen].bounds.size.width, [UIScreen mainScreen].bounds.size.height - 100); self.csjSplashAd = [[BUSplashAd alloc] initWithSlotID:@"102509668" adSize:CGSizeMake(frame.size.width, frame.size.height)]; //self.splashAd.tolerateTimeout = 10; self.csjSplashAd.delegate = self; self.csjSplashAd.tolerateTimeout=3.0; [self.csjSplashAd loadAdData]; } - (void)loadAd { - (void)loadGDTAd { BOOL res = [GDTSDKConfig registerAppId:GDTADkey]; if (res) { } self.splash = [[GDTSplashAd alloc] initWithPlacementId:GDTFullADid]; self.gdtSplash = [[GDTSplashAd alloc] initWithPlacementId:GDTFullADid]; _splash.delegate = self;//设置代理 _gdtSplash.delegate = self;//设置代理 //根据iPhone设备不同设置不同的背景图 float width = [UIScreen mainScreen].bounds.size.width; @@ -628,32 +630,32 @@ CGFloat viewHeight = 0.0; if (width == 320.0f && height<=480.0f) { // iphone4 iphone4s 上的default图片 _splash.backgroundColor=[UIColor colorWithPatternImage:[UIImage imageNamed:@"320x480"]]; _gdtSplash.backgroundColor=[UIColor colorWithPatternImage:[UIImage imageNamed:@"320x480"]]; imageview.backgroundColor = [UIColor colorWithPatternImage:[UIImage imageNamed:@"320"]]; viewHeight = 55; }else if (width ==320.0f && height==568.0f) { // iphone5 上的default图片 _splash.backgroundColor=[UIColor colorWithPatternImage:[UIImage imageNamed:@"320x568"]]; _gdtSplash.backgroundColor=[UIColor colorWithPatternImage:[UIImage imageNamed:@"320x568"]]; imageview.backgroundColor = [UIColor colorWithPatternImage:[UIImage imageNamed:@"320"]]; viewHeight = 55; }else if (width ==375.0f) { // iphone6 上的default图片 _splash.backgroundColor=[UIColor colorWithPatternImage:[UIImage imageNamed:@"375x667"]]; _gdtSplash.backgroundColor=[UIColor colorWithPatternImage:[UIImage imageNamed:@"375x667"]]; imageview.backgroundColor = [UIColor colorWithPatternImage:[UIImage imageNamed:@"375"]]; viewHeight = 63; }else{ // iphone6 plus 上的default图片 _splash.backgroundColor = [UIColor colorWithPatternImage:[UIImage imageNamed:@"414x736"]]; _gdtSplash.backgroundColor = [UIColor colorWithPatternImage:[UIImage imageNamed:@"414x736"]]; imageview.backgroundColor = [UIColor colorWithPatternImage:[UIImage imageNamed:@"414"]]; viewHeight = 69; } if (KIsiPhoneX) { _splash.backgroundColor=[UIColor colorWithPatternImage:[UIImage imageNamed:@"1125x2436"]]; _gdtSplash.backgroundColor=[UIColor colorWithPatternImage:[UIImage imageNamed:@"1125x2436"]]; } _splash.fetchDelay=5;//开屏拉取的时间,超时则放弃展示 _gdtSplash.fetchDelay=5;//开屏拉取的时间,超时则放弃展示 // [_splash loadAdAndShowInWindow:self.window];//拉起并展示全屏广告 // [_splash loadAdAndShowInWindow:self.window withBottomView:[UIView new]]; @@ -664,7 +666,7 @@ _bottomView.backgroundColor = [UIColor whiteColor]; UIView *loadView = [[UIView alloc]initWithFrame:CGRectMake(0, 0, width, viewHeight)]; loadView.backgroundColor = [UIColor clearColor]; [_splash loadAdAndShowInWindow:self.window withBottomView:loadView]; [_gdtSplash loadAdAndShowInWindow:self.window withBottomView:loadView]; [self.window addSubview:self.bottomView]; } @@ -842,12 +844,16 @@ ///新版本回调 /// - (void)splashAdLoadFail:(BUSplashAd *)splashAd error:(BUAdError *)error{ if(self.viewBot){ [self.viewBot removeFromSuperview]; // [splashAd removeFromSuperview]; self.viewBot = nil; } if(self.bottomView){ [self.bottomView removeFromSuperview]; self.bottomView = nil; [self loadAd]; } [self pbu_logWithSEL:_cmd msg:@""]; [self loadGDTAd]; } - (void)splashAdLoadSuccess:(BUSplashAd *)splashAd{ NSLog(@"splashAdLoadSuccess"); @@ -859,9 +865,14 @@ } - (void)splashAdDidClose:(nonnull BUSplashAd *)splashAd closeType:(BUSplashAdCloseType)closeType { if(self.viewBot){ [self.viewBot removeFromSuperview]; //[splashAd removeFromSuperview]; self.viewBot = nil; } if(self.bottomView){ [self.bottomView removeFromSuperview]; self.bottomView = nil; } [self pbu_logWithSEL:_cmd msg:@""]; [self splashDisappear]; } @@ -883,13 +894,14 @@ - (void)splashDidCloseOtherController:(nonnull BUSplashAd *)splashAd interactionType:(BUInteractionType)interactionType { [splashAd.mediation destoryAd]; [self pbu_logWithSEL:_cmd msg:@""]; } - (void)splashVideoAdDidPlayFinish:(nonnull BUSplashAd *)splashAd didFailWithError:(nonnull NSError *)error { [self pbu_logWithSEL:_cmd msg:@""]; } //- (void)splashVideoAdDidPlayFinish:(nonnull BUSplashAd *)splashAd didFailWithError:(nonnull NSError *)error { // [self pbu_logWithSEL:_cmd msg:@""]; //} - (void)pbu_logWithSEL:(SEL)sel msg:(NSString *)msg { @@ -936,7 +948,7 @@ NSLog(@"%s",__FUNCTION__); self.bottomView.hidden = YES; [self.bottomView removeFromSuperview]; _splash = nil; _gdtSplash = nil; [self splashDisappear]; } BuWanVideo2.0/CustomIOSAlertView.m
@@ -197,6 +197,7 @@ { if (containerView == NULL) { containerView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 300, 150)]; containerView.backgroundColor = [UIColor colorWithRed:198.0/255.0 green:198.0/255.0 blue:198.0/255.0 alpha:1.0f]; } CGSize screenSize = [self countScreenSize]; @@ -208,10 +209,12 @@ // This is the dialog's container; we attach the custom content and the buttons to this one UIView *dialogContainer = [[UIView alloc] initWithFrame:CGRectMake((screenSize.width - dialogSize.width) / 2, (screenSize.height - dialogSize.height) / 2, dialogSize.width, dialogSize.height)]; // 添加标题 UILabel *titleView= [[UILabel alloc] initWithFrame:CGRectMake(0, 0, dialogContainer.bounds.size.width, titleHeight)]; titleView.text = @"用户协议与隐私政策"; titleView.textAlignment = NSTextAlignmentCenter; titleView.textColor=[UIColor blackColor]; [dialogContainer addSubview:titleView]; BuWanVideo2.0/HelpViewController.m
@@ -65,6 +65,7 @@ UILabel *lianxi = [[UILabel alloc]initWithFrame:CGRectMake(15, 13, 80, 30)]; lianxi.text = @"联系我们"; lianxi.font = [UIFont systemFontOfSize:18]; lianxi.textColor=[UIColor blackColor]; [women addSubview:lianxi]; UIImageView *image = [[UIImageView alloc]init]; @@ -74,6 +75,7 @@ UILabel *kefu = [[UILabel alloc]initWithFrame:CGRectMake(80, 62, 70, 30)]; kefu.text = @"QQ客服"; kefu.textColor=[UIColor blackColor]; kefu.font = [UIFont systemFontOfSize:16]; [women addSubview:kefu]; @@ -96,6 +98,7 @@ UILabel *changjian = [[UILabel alloc]initWithFrame:CGRectMake(15, 13, 80, 30)]; changjian.text = @"常见问题"; changjian.font = [UIFont systemFontOfSize:18]; changjian.textColor=[UIColor blackColor]; [wenti addSubview:changjian]; UILabel *L4 = [[UILabel alloc]initWithFrame:CGRectMake(0, 49, KScreenW, 1)]; BuWanVideo2.0/Info.plist
@@ -3,7 +3,7 @@ <plist version="1.0"> <dict> <key>CFBundleDevelopmentRegion</key> <string>同意布丸影视大全使用地理信息吗?</string> <string>同意影视大全使用地理信息吗?</string> <key>CFBundleDisplayName</key> <string>影视大全</string> <key>CFBundleExecutable</key> @@ -13,7 +13,7 @@ <key>CFBundleInfoDictionaryVersion</key> <string>6.0</string> <key>CFBundleName</key> <string>布丸影视大全</string> <string>影视大全</string> <key>CFBundlePackageType</key> <string>APPL</string> <key>CFBundleShortVersionString</key> @@ -132,15 +132,15 @@ <key>NSBluetoothPeripheralUsageDescription</key> <string>需要打开您的蓝牙</string> <key>NSCalendarsUsageDescription</key> <string>同意布丸影视大全使用日历信息吗?</string> <string>同意影视大全使用日历信息吗?</string> <key>NSCameraUsageDescription</key> <string>用于上传头像,需要访问您的相机权限</string> <key>NSLocationUsageDescription</key> <string>同意布丸影视大全定位吗?</string> <string>同意影视大全定位吗?</string> <key>NSPhotoLibraryUsageDescription</key> <string>用于上传头像,需要访问您的相册权限</string> <key>NSUserTrackingUsageDescription</key> <string>布丸影视大全需要您的同意,向您投放个性化广告</string> <string>影视大全需要您的同意,向您投放个性化广告</string> <key>SKAdNetworkItems</key> <array> <dict> @@ -155,6 +155,10 @@ <key>SKAdNetworkIdentifier</key> <string>238da6jt44.skadnetwork</string> </dict> <dict> <key>SKAdNetworkIdentifier</key> <string>Adn SKAdNetworkIdentifier</string> </dict> </array> <key>UIRequiredDeviceCapabilities</key> <array> BuWanVideo2.0/Personal_informationViewController.m
@@ -465,6 +465,7 @@ }else{ cell.iconImageView.image=[UIImage imageNamed:@"关注默认头像"]; } cell.backgroundColor=[UIColor whiteColor]; return cell; }else if(indexPath.section==1){ InfoTableViewCell *cell=[tableView dequeueReusableCellWithIdentifier:@"InfoTableViewCell"]; @@ -492,6 +493,8 @@ cell.cellInfo.text=@"未知"; } } cell.cellInfo.textColor= [UIColor blackColor]; cell.backgroundColor=[UIColor whiteColor]; return cell; }else{ signatureTableViewCell *cell=[tableView dequeueReusableCellWithIdentifier:@"signatureTableViewCell"]; @@ -499,6 +502,7 @@ if (_Sign!=nil) { cell.cellInfo.text=_Sign; } cell.backgroundColor=[UIColor whiteColor]; return cell; } } BuWanVideo2.0/Recommend/ListControlelr/ListController.m
@@ -404,14 +404,12 @@ } - (CGSize)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout *)collectionViewLayout sizeForItemAtIndexPath:(NSIndexPath *)indexPath { if (indexPath.section == 0) { if (indexPath.section == 0 && self.dictionaryBanaer && [self.dictionaryBanaer allKeys].count != 0) { return CGSizeMake(KScreenW, 5 + 156); } else { NSUInteger ids = [_parms[@"Id"] integerValue]; if (ids == 150 || ids == 151 || ids == 152 ||ids == 153) { return CGSizeMake((KScreenW-9-9-6-6)/3, 41+(((KScreenW-9-9-6-6)/3))*1.39); } else { return CGSizeMake((KScreenW-9-9-8)/2, 41+(((KScreenW-9-9-8)/2))*0.562); } @@ -421,14 +419,13 @@ //协议中的方法,用于返回整个CollectionView上、左、下、右距四边的间距 - (UIEdgeInsets)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout *)collectionViewLayout insetForSectionAtIndex:(NSInteger)section { if (section == 0) { if (section == 0 && self.dictionaryBanaer && [self.dictionaryBanaer allKeys].count != 0) { return UIEdgeInsetsMake(0, 0, 0, 0); } else { NSUInteger ids = [_parms[@"Id"] integerValue]; if (ids == 150 || ids == 151 || ids == 152 ||ids == 153) { return UIEdgeInsetsMake(5, 9, 0, 9); } else { return UIEdgeInsetsMake(0, 9, 0, 9); } @@ -438,7 +435,7 @@ //两行cell之间的间距 - (CGFloat)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout*)collectionViewLayout minimumLineSpacingForSectionAtIndex:(NSInteger)section { if (section == 0) { if (section == 0 && self.dictionaryBanaer && [self.dictionaryBanaer allKeys].count != 0) { return 0; } else { @@ -455,7 +452,7 @@ //同一行两个cell的间距 - (CGFloat)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout*)collectionViewLayout minimumInteritemSpacingForSectionAtIndex:(NSInteger)section { if (section == 0) { if (section == 0 && self.dictionaryBanaer && [self.dictionaryBanaer allKeys].count != 0) { return 0; } else { BuWanVideo2.0/Recommend/Recommend/Cell/RecommendAdView.h
New file @@ -0,0 +1,22 @@ // // RecommendAdView.h // BuWanVideo2.0 // // Created by aeline on 2022/1/19. // Copyright © 2022 com.yeshi.buwansheque.ios. All rights reserved. // #import <UIKit/UIKit.h> #import <LCDSDK/LCDSDK.h> #import "RecommendDelegate.h" #import <BUAdSDK/BUAdSDK.h> NS_ASSUME_NONNULL_BEGIN @interface RecommendAdView : UICollectionViewCell @property (nonatomic, weak) id<RecommendDelegate>delegate; - (void) showNativeAd:(BUNativeAd *)nativeAd; - (void) closeAd; @end NS_ASSUME_NONNULL_END BuWanVideo2.0/Recommend/Recommend/Cell/RecommendAdView.m
New file @@ -0,0 +1,68 @@ // // RecommendAdView.m // BuWanVideo2.0 // // Created by aeline on 2022/1/19. // Copyright © 2022 com.yeshi.buwansheque.ios. All rights reserved. // #import "RecommendAdView.h" #import <BUAdSDK/BUAdSDK.h> @interface RecommendAdView () @property (nonatomic) BUNativeAdsManager *adManager; @property (nonatomic) BUNativeAd *nativeAd; @end @implementation RecommendAdView - (instancetype)initWithFrame:(CGRect)frame { self = [super initWithFrame:frame]; NSLog(@"RecommendAdView initWithFrame -%f -%f",frame.origin.x,frame.origin.y); if (self) { // [self setupDataConfig]; // [self setupViewConfig]; } return self; } - (void)setupDataConfig { } - (void)setupViewConfig{ } - (void) showNativeAd:(BUNativeAd *)nativeAd{ if(nativeAd==nil){ return; } if(self.contentView.subviews.count>0){ return; } for(UIView *view in self.contentView.subviews){ [view removeFromSuperview]; } if (nativeAd.mediation.isExpressAd) { [nativeAd.mediation render]; } if (nativeAd.mediation.canvasView) { if(_delegate){ [_delegate onAdLoad]; } [self.contentView addSubview:nativeAd.mediation.canvasView]; } } - (void) closeAd{ for(UIView *view in self.contentView.subviews){ [view removeFromSuperview]; } } @end BuWanVideo2.0/Recommend/Recommend/Cell/RecommendTwoColumnCell.m
@@ -72,10 +72,14 @@ NSRange range1 = [[NSString stringWithFormat:@"%@分",data[@"Score"]] rangeOfString:@"."]; NSRange range2 = NSMakeRange(range1.location+1, 2); @try{ [noteStr addAttribute:NSFontAttributeName value:[UIFont systemFontOfSize:9] range:range2]; [ self.labelScore setAttributedText:noteStr]; } @catch (NSException *exception) { } } NSString *conetnt = data[@"Name"]; self.labelTitle.text = conetnt; BuWanVideo2.0/Recommend/Recommend/Delegate/RecommendDelegate.h
@@ -20,6 +20,10 @@ - (void)onEventBaner:(NSDictionary *)parms; - (void)onAdLoad; - (void)onAdClose; @end NS_ASSUME_NONNULL_END BuWanVideo2.0/Recommend/Recommend/RecommendController.m
@@ -21,10 +21,20 @@ #import "UICollectionViewLeftAlignedLayout.h" #import "RecommendVideoCardView.h" #import "RecommendAdView.h" //内容联盟 #import <LCDSDK/LCDSDK.h> @interface RecommendController () <UICollectionViewDelegate, UICollectionViewDataSource, RecommendDelegate,LCDVideoCardProviderDelegate> #import <BUAdSDK/BUAdSDK.h> const int CELL_TYPE_BANNER = 0; const int CELL_TYPE_COMMON = 1; const int CELL_TYPE_VIDEO_CARD = 2; const int CELL_TYPE_AD = 3; @interface RecommendController () <UICollectionViewDelegate, UICollectionViewDataSource, RecommendDelegate,LCDVideoCardProviderDelegate,BUMNativeAdsManagerDelegate,BUNativeAdDelegate> @property (nonatomic, nullable, strong) UICollectionView *collectionView; @@ -32,9 +42,13 @@ @property (nonatomic, nullable, strong) RecommendVideoCardView *cellRecommendVideoCard; @property (nonatomic, nullable, strong) RecommendAdView *cellRecommendAd; @property (nonatomic, assign) NSUInteger page; @property (nonatomic, assign) NSUInteger position; @property (nonatomic, assign) bool showAd; @property (nonatomic, nullable, strong) NSDictionary *dictionaryBanaer; @property (nonatomic, nullable, strong) NSArray *arrayTemp; @@ -43,6 +57,11 @@ @property (nonatomic, assign) NSUInteger count; @property (nonatomic) id<LCDViewElement> videoCardElementView; @property (nonatomic) BUNativeAd *nativeAd; @property (nonatomic) BUNativeAdsManager *adManager; @end @implementation RecommendController @@ -94,6 +113,7 @@ }]; } -(void)getHomeAd{ NSLog(@"getHomeAd"); [SVProgressHUD show]; @@ -104,7 +124,6 @@ dispatch_group_async(group, queue, ^{ [[YTHNetInterface startInterface] getHomeAdWithUid:[YTHsharedManger startManger].Uid vtid:_parms[@"Id"] withSystem:@"1" withBlock:^(BOOL isSuccessful, id result, NSString *error) { if (isSuccessful) { NSDictionary *dic = (NSDictionary *)result; self.dictionaryBanaer = dic[@"Data"]; @@ -156,6 +175,7 @@ }); }); [self refreshVideoCard]; [self loadAd]; } - (void)loadFooter:(void(^)(void))handel { @@ -195,13 +215,25 @@ } - (void)changeData:(NSString *)vid page:(NSUInteger)page index:(NSInteger)index { int offset=1+(_position==0?1:0); int data_offset = 1; if (_position==0) { data_offset = 1; if(index<3){ data_offset += 1; }else{ if(_showAd){ data_offset += 2; }else{ data_offset += 1; } } } [[YTHNetInterface startInterface] getVideoRecommendWithUid:vid Page:page WithSystem:@"1" withBlock:^(BOOL isSuccessful, id result, NSString *error) { if (isSuccessful) { NSMutableDictionary *parms = [[NSMutableDictionary alloc] initWithDictionary:self.arrayContent[index-offset]]; NSMutableDictionary *parms = [[NSMutableDictionary alloc] initWithDictionary:self.arrayContent[index - data_offset]]; parms[@"page"] = result[@"Data"][@"page"]; parms[@"HomeVideoList"] = result[@"Data"][@"list"]; self.arrayContent[index-offset] = parms; self.arrayContent[index-data_offset] = parms; [self.collectionView reloadSections:[NSIndexSet indexSetWithIndex:index]]; } }]; @@ -291,19 +323,54 @@ self.page = 1; //下拉刷新 [self refreshVideoCard]; [self loadAd]; [self loadFooter:^{ }]; }]; } -(int)getDataOffset:(NSInteger) section{ int offset= 1; if(_position==0){ if(section<3){ offset += 1; }else{ if(_showAd){ offset += 2; } else{ offset += 1; } } } return offset; } -(int) getCellType:(NSInteger) section{ if(section == 0){ return CELL_TYPE_BANNER; } if(_position!=0){ return CELL_TYPE_COMMON; } if(section==1){ return CELL_TYPE_VIDEO_CARD; } if(section==3&&_showAd){ return CELL_TYPE_AD; } return CELL_TYPE_COMMON; } - (void)cellClick:(NSIndexPath *)indexPath { int offset=1+(_position==0?1:0); if(indexPath.section<offset){ if([self getCellType:indexPath.section]!=CELL_TYPE_COMMON){ return; } int offset= [self getDataOffset:indexPath.section]; if(self.arrayContent!=nil&&self.arrayContent.count>0) { NSDictionary *parms = [NSDictionary new]; BOOL BigPicture = [self.arrayContent[indexPath.section-offset][@"HomeVideoList"][0][@"BigPicture"] boolValue]; if (BigPicture) { @@ -314,10 +381,10 @@ } [self onResult:parms]; } } - (void)headerClick:(NSIndexPath *)indexPath { int offset=1+(_position==0?1:0); int offset= [self getDataOffset:indexPath.section]; NSDictionary *parms = [NSDictionary new]; parms = self.arrayContent[indexPath.section-offset][@"HomeVideoList"][0][@"Video"]; @@ -363,16 +430,25 @@ } - (NSInteger)numberOfSectionsInCollectionView:(UICollectionView *)collectionView { //TODO 测试 //添加今日必看与广告 int offset=1+(_position==0?1:0); if(_showAd){ offset+=1; } return self.arrayContent.count+offset; } - (NSInteger)collectionView:(UICollectionView *)collectionView numberOfItemsInSection:(NSInteger)section { int offset=1+(_position==0?1:0); if (section <offset) { // 位置0 banner // 位置1-今日必看 // 位置3-广告 if (_position==0&§ion==1) { return 1; } else { }else if(_position==0&§ion==3&&_showAd){ return 1; } else if(section>0) { int offset= [self getDataOffset:section]; if(self.arrayContent!=nil&&self.arrayContent.count>0){ NSUInteger Columns = [self.arrayContent[section-offset][@"Columns"] integerValue]; if (Columns == 2 || Columns == 3) { if ([self.arrayContent[section-offset][@"HomeVideoList"] count] > 0) { @@ -384,12 +460,13 @@ } } } } return 1; } - (UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath { int offset=1+(_position==0?1:0); int cell_type = [self getCellType:indexPath.section]; if (indexPath.section == 0) { if (!self.cellRecommendHeader) { @@ -398,16 +475,24 @@ self.cellRecommendHeader.delegate = self; self.cellRecommendHeader.arrayImageData = self.dictionaryBanaer; return self.cellRecommendHeader; }else if (indexPath.section == 1&&offset==2) { }else if (cell_type == CELL_TYPE_VIDEO_CARD) { if (!self.cellRecommendVideoCard) { self.cellRecommendVideoCard = [collectionView dequeueReusableCellWithReuseIdentifier:@"RecommendVideoCardView" forIndexPath:indexPath]; } //刷新数据 return self.cellRecommendVideoCard; }else if (cell_type == CELL_TYPE_AD) { if (!self.cellRecommendAd) { self.cellRecommendAd = [collectionView dequeueReusableCellWithReuseIdentifier:@"RecommendAdView" forIndexPath:indexPath]; self.cellRecommendAd.delegate = self; } // 显示广告数据 [self.cellRecommendAd showNativeAd:self.nativeAd]; return self.cellRecommendAd; } else { int offset= [self getDataOffset:indexPath.section]; NSLog(@"加载cell %i-%i",indexPath.section,indexPath.row); if(self.arrayContent!=nil&&self.arrayContent.count>0){ NSUInteger Columns = [self.arrayContent[indexPath.section-offset][@"Columns"] integerValue]; if (Columns > 3) { ToDayHotCell *cell = [collectionView dequeueReusableCellWithReuseIdentifier:@"ToDayHotCell" forIndexPath:indexPath]; @@ -450,6 +535,7 @@ } } } } UICollectionViewCell *cell = [collectionView dequeueReusableCellWithReuseIdentifier:@"UICollectionViewCell" forIndexPath:indexPath]; return cell; } @@ -457,10 +543,12 @@ // 定制collectionView的head和foot - (UICollectionReusableView *)collectionView:(UICollectionView *)collectionView viewForSupplementaryElementOfKind:(NSString *)kind atIndexPath:(NSIndexPath *)indexPath { int offset=1+(_position==0?1:0); int offset=[self getDataOffset:indexPath.section]; int cell_type = [self getCellType:indexPath.section]; if (kind == UICollectionElementKindSectionHeader) { if (indexPath.section > offset-1) { if (cell_type == CELL_TYPE_COMMON&& indexPath.section >0 ) { if(self.arrayContent!=nil&&self.arrayContent.count>0&&indexPath.section>0){ RecpmmendTitleView *view = [collectionView dequeueReusableSupplementaryViewOfKind:UICollectionElementKindSectionHeader withReuseIdentifier:@"RecpmmendTitleView" forIndexPath:indexPath]; view.delegate = self; BOOL BigPicture = NO; @@ -472,7 +560,8 @@ view.index = indexPath.section; view.indexPath = indexPath; return view; }else if(indexPath.section==1&&offset==2){ } }else if(cell_type == CELL_TYPE_VIDEO_CARD){ RecpmmendTitleView *view = [collectionView dequeueReusableSupplementaryViewOfKind:UICollectionElementKindSectionHeader withReuseIdentifier:@"RecpmmendTitleView" forIndexPath:indexPath]; view.delegate = self; BOOL BigPicture = NO; @@ -484,7 +573,8 @@ } } else if (kind == UICollectionElementKindSectionFooter) { if (indexPath.section > offset) { if (cell_type == CELL_TYPE_COMMON) { if(self.arrayContent!=nil&&self.arrayContent.count>0&&indexPath.section>0){ NSDictionary *data = self.arrayContent[indexPath.section-offset]; if ([data[@"RefreshPosition"] integerValue] == 2) { RecommendChangeFooterView *view = [collectionView dequeueReusableSupplementaryViewOfKind:UICollectionElementKindSectionFooter withReuseIdentifier:@"RecommendChangeFooterView" forIndexPath:indexPath]; @@ -494,9 +584,9 @@ return view; } } } UICollectionReusableView *view = [collectionView dequeueReusableSupplementaryViewOfKind:UICollectionElementKindSectionFooter withReuseIdentifier:@"tempFooterView" forIndexPath:indexPath]; return view; } UICollectionReusableView *view = [collectionView dequeueReusableSupplementaryViewOfKind:UICollectionElementKindSectionHeader withReuseIdentifier:@"tempHeaderView" forIndexPath:indexPath]; @@ -506,47 +596,66 @@ } - (CGSize)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout *)collectionViewLayout referenceSizeForHeaderInSection:(NSInteger)section{ int offset=1+(_position==0?1:0); int offset=[self getDataOffset:section]; //宽度随便定,系统会自动取collectionView的宽度 //高度为分组头的高度 if (section > offset-1) { int cell_type = [self getCellType:section]; if (cell_type==CELL_TYPE_COMMON&§ion>0) { if(self.arrayContent!=nil&&self.arrayContent.count>0){ if ([self.arrayContent[section-offset][@"HomeVideoList"] count] > 0) { BOOL BigPicture = [self.arrayContent[section-offset][@"HomeVideoList"][0][@"BigPicture"] boolValue]; if (BigPicture) { return CGSizeMake(KScreenW, 216 + 40 + 30); } } } return CGSizeMake(KScreenW, 47); }else if(section==1){ }else if(cell_type==CELL_TYPE_VIDEO_CARD){ // 小视频 return CGSizeMake(KScreenW, 47); }else if(cell_type==CELL_TYPE_AD){ // 广告 //return CGSizeMake(KScreenW, KScreenW*0.8); return CGSizeMake(CGFLOAT_MIN, CGFLOAT_MIN); } return CGSizeMake(CGFLOAT_MIN, CGFLOAT_MIN); } - (CGSize)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout*)collectionViewLayout referenceSizeForFooterInSection:(NSInteger)section { int offset=1+(_position==0?1:0); if (section <offset) { int offset=[self getDataOffset:section]; //宽度随便定,系统会自动取collectionView的宽度 //高度为分组头的高度 int cell_type = [self getCellType:section]; if (cell_type!=CELL_TYPE_COMMON||section == 0) { return CGSizeMake(CGFLOAT_MIN, CGFLOAT_MIN); } if(self.arrayContent!=nil&&self.arrayContent.count>0) { NSUInteger Columns = [self.arrayContent[section-offset][@"RefreshPosition"] integerValue]; if (Columns == 2) { return CGSizeMake(KScreenW, 41); } else { return CGSizeMake(CGFLOAT_MIN, CGFLOAT_MIN); } } return CGSizeMake(CGFLOAT_MIN, CGFLOAT_MIN); } - (CGSize)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout *)collectionViewLayout sizeForItemAtIndexPath:(NSIndexPath *)indexPath { int offset=1+(_position==0?1:0); int offset=[self getDataOffset:indexPath.section]; int cell_type = [self getCellType:indexPath.section]; if (indexPath.section == 0) { CGFloat bannerSizeRate = [self.dictionaryBanaer[@"bannerSizeRate"] doubleValue]; return CGSizeMake(KScreenW, 5 + (KScreenW * bannerSizeRate)); } else if (indexPath.section == 1&&offset==2) { // return CGSizeMake(KScreenW, KScreenW/2.4 * 1.4); } else if (cell_type ==CELL_TYPE_VIDEO_CARD) { return CGSizeMake(KScreenW, KScreenW/2.4 * 1.4); } else { }else if (cell_type ==CELL_TYPE_AD) { return CGSizeMake(KScreenW, KScreenW*0.6); } else { if(self.arrayContent!=nil&&self.arrayContent.count>0){ NSUInteger Columns = [self.arrayContent[indexPath.section-offset][@"Columns"] integerValue]; if (Columns > 3) { return CGSizeMake(KScreenW, 140); @@ -568,16 +677,23 @@ } } } } return CGSizeMake(KScreenW, 35); } //协议中的方法,用于返回整个CollectionView上、左、下、右距四边的间距 - (UIEdgeInsets)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout *)collectionViewLayout insetForSectionAtIndex:(NSInteger)section { int offset=1+(_position==0?1:0); if (section <offset) { return UIEdgeInsetsMake(0, 0, 0, 0); int offset=[self getDataOffset:section]; int cell_type = [self getCellType:section]; if (cell_type!=CELL_TYPE_COMMON||section==0) { if(cell_type==CELL_TYPE_AD){ return UIEdgeInsetsMake(10, 9, 0, 9); } else { return UIEdgeInsetsMake(0, 0, 0, 0); } } else { if(self.arrayContent!=nil&&self.arrayContent.count>0){ NSUInteger Columns = [self.arrayContent[section-offset][@"Columns"] integerValue]; if (Columns == 2 || Columns == 3) { return UIEdgeInsetsMake(5, 9, 0, 9); @@ -586,16 +702,19 @@ return UIEdgeInsetsMake(0, 9, 0, 9); } } } return UIEdgeInsetsMake(0, 0, 0, 0); } //两行cell之间的间距 - (CGFloat)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout*)collectionViewLayout minimumLineSpacingForSectionAtIndex:(NSInteger)section { int offset=1+(_position==0?1:0); if (section <offset) { int offset=[self getDataOffset:section]; int cell_type = [self getCellType:section]; if (cell_type!=CELL_TYPE_COMMON||section==0) { return 0; } else { if(self.arrayContent!=nil&&self.arrayContent.count>0){ NSUInteger Columns = [self.arrayContent[section-offset][@"Columns"] integerValue]; if (Columns == 2) { return 12; @@ -604,22 +723,26 @@ return 10; } } } return 0; } //同一行两个cell的间距 - (CGFloat)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout*)collectionViewLayout minimumInteritemSpacingForSectionAtIndex:(NSInteger)section { int offset=1+(_position==0?1:0); if (section <offset) { int offset=[self getDataOffset:section]; int cell_type = [self getCellType:section]; if (cell_type!=CELL_TYPE_COMMON||section==0) { return 0; } else { if(self.arrayContent!=nil&&self.arrayContent.count>0){ NSUInteger Columns = [self.arrayContent[section-offset][@"Columns"] integerValue]; if (Columns == 2) { return 8; } else if (Columns == 3) { return 6; } } } return 0; @@ -646,6 +769,8 @@ [_collectionView registerClass:[RecommendThreeColumnCell class] forCellWithReuseIdentifier:@"RecommendThreeColumnCell"]; [_collectionView registerClass:[RecommendVideoCardView class] forCellWithReuseIdentifier:@"RecommendVideoCardView"]; [_collectionView registerClass:[RecommendAdView class] forCellWithReuseIdentifier:@"RecommendAdView"]; [_collectionView registerClass:[UICollectionViewCell class] forCellWithReuseIdentifier:@"UICollectionViewCell"]; @@ -681,4 +806,78 @@ NSLog(@"video-card lcdContentRequestSuccess"); } - (void) loadAd{ if (self.adManager) { // 销毁上次广告对象 聚合维度方法 [self.adManager.mediation destory]; } BUAdSlot *slot = [[BUAdSlot alloc] init]; slot.ID = @"102509315"; // 聚合维度通过广告位ID发起请求,仅接入CSJ广告通过代码位ID发起请求 slot.adSize = CGSizeMake(KScreenW-9*2, (KScreenW-9*2)*0.6); // 按照实际情况设置广告尺寸 slot.mediation.mutedIfCan = YES; // 静音 (聚合功能) BUNativeAdsManager *adManager = [[BUNativeAdsManager alloc] initWithSlot:slot]; self.adManager = adManager; self.adManager.mediation.rootViewController = [UIApplication sharedApplication].delegate.window.rootViewController; self.adManager.delegate = self; [self.adManager loadAdDataWithCount:1]; // 加载广告数量,支持1~3个 } - (void)nativeAdsManagerSuccessToLoad:(BUNativeAdsManager *)adsManager nativeAds:(NSArray<BUNativeAd *> *)nativeAdDataArray{ if(nativeAdDataArray.count>0){ if(self.nativeAd){ self.nativeAd = nil; } self.nativeAd = nativeAdDataArray[0]; self.nativeAd.rootViewController = [UIApplication sharedApplication].keyWindow.rootViewController; if (self.nativeAd.mediation.isExpressAd) { [self.nativeAd.mediation render]; } self.nativeAd.delegate = self; if(self.cellRecommendAd){ [self.cellRecommendAd closeAd]; } [self onAdLoad]; } } - (void)nativeAd:(BUNativeAd *)nativeAd dislikeWithReason:(NSArray<BUDislikeWords *> *)filterWords{ if(self){ [self onAdClose]; } } - (void)nativeAd:(BUNativeAd *)nativeAd didFailWithError:(NSError *)error{ if(self){ [self onAdClose]; if(self.cellRecommendAd){ [self.cellRecommendAd closeAd]; } } } //加载广告 - (void)onAdLoad{ _showAd = YES; BOOL animationsEnabled = [UIView areAnimationsEnabled]; [UIView setAnimationsEnabled:NO]; //为了避免重新加载时出现不需要的动画(又名“闪烁”) [UIView setAnimationsEnabled:NO]; [self.collectionView reloadData]; [UIView setAnimationsEnabled:animationsEnabled]; } // 关闭广告 - (void)onAdClose{ _showAd = NO; BOOL animationsEnabled = [UIView areAnimationsEnabled]; [UIView setAnimationsEnabled:NO]; //为了避免重新加载时出现不需要的动画(又名“闪烁”) [UIView setAnimationsEnabled:NO]; [self.collectionView reloadData]; [UIView setAnimationsEnabled:animationsEnabled]; } @end BuWanVideo2.0/SearchController.m
@@ -183,17 +183,18 @@ GDTNativeExpressAdView *> *)views { GDTNativeExpressAdView *adView = (GDTNativeExpressAdView *)views[0]; adView.controller = self; [adView render]; NSIndexPath *indexPath = [NSIndexPath indexPathForRow:0 inSection:3]; UICollectionViewCell *cell = (UICollectionViewCell *)[self.collectionView cellForItemAtIndexPath:indexPath]; if(cell!=nil){ cell.sd_layout.leftSpaceToView(self, 10); [cell addSubview:adView]; // 广告位 render 后刷新 tableView [self.collectionView reloadData]; } } - (void)nativeExpressAdFailToLoad:(GDTNativeExpressAd *)nativeExpressAd error:(NSError *)error{ NSLog(@"%@",error); } BuWanVideo2.0/UITabBar+mainTab.m
@@ -9,8 +9,13 @@ #import "UITabBar+mainTab.h" @implementation UITabBar (mainTab) - (UITraitCollection *)traitCollection { if (@available(iOS 17,*)){ return [super traitCollection]; }else{ return [UITraitCollection traitCollectionWithHorizontalSizeClass:UIUserInterfaceSizeClassCompact]; } } @end BuWanVideo2.0/WEBViewController.m
@@ -25,11 +25,11 @@ - (void)viewDidLoad{ [super viewDidLoad]; //做的假导航栏 _titleView=[[UILabel alloc] initWithFrame:CGRectMake(0, 0, KScreenW, 64)]; _titleView=[[UILabel alloc] initWithFrame:CGRectMake(0, 0 , KScreenW, 64 + kStatusBarH)]; _titleView.backgroundColor=kGlobalMainColor; _titleView.userInteractionEnabled=YES; [self.view addSubview:_titleView]; //添加网页链接 _urlView=[[UILabel alloc] initWithFrame:CGRectMake(50, 34, KScreenW-100, 24)]; @@ -62,10 +62,11 @@ // 这行代码可以是侧滑返回webView的上一级,而不是跟控制器(*指针对侧滑有效) [_webView setAllowsBackForwardNavigationGestures:true]; [self.view addSubview:_webView]; //添加返回按钮 _backBt=[[UIButton alloc] initWithFrame:CGRectMake(8, 22, 32, 32)]; _backBt=[[UIButton alloc] initWithFrame:CGRectMake(8, 22 + kStatusBarH , 32, 32)]; [_backBt setImage:[UIImage imageNamed:@"详情页面返回"] forState:UIControlStateNormal]; [_backBt addTarget:self action:@selector(backButtonPushed:) forControlEvents:UIControlEventTouchUpInside]; [self.view addSubview:_backBt]; @@ -82,16 +83,18 @@ [_webView addObserver:self forKeyPath:@"title" options:NSKeyValueObservingOptionNew context:NULL]; [_webView addObserver:self forKeyPath:@"estimatedProgress" options:NSKeyValueObservingOptionNew context:NULL]; [self loadwebViews]; // UIView *view=[[UIView alloc] initWithFrame:CGRectMake(0, kStatusBarH , KScreenW, kStatusBarH)]; // view.backgroundColor=[UIColor redColor]; // [self.view addSubview:view]; } - (void)viewWillAppear:(BOOL)animated{ [super viewWillAppear:animated]; //保持屏幕常亮 [[UIApplication sharedApplication] setIdleTimerDisabled:YES]; [[UIApplication sharedApplication] setStatusBarHidden:YES]; } -(void)viewWillDisappear:(BOOL)animated{ @@ -196,11 +199,11 @@ } //支持的方向 因为界面A我们只需要支持竖屏 - (UIInterfaceOrientationMask)supportedInterfaceOrientations{ _titleView.frame=CGRectMake(0, 0, KScreenWp, 64); _urlView.frame=CGRectMake(50, 34, KScreenWp-100, 24); _webView.frame=CGRectMake(0, 64, KScreenWp, KScreenHp-64); _backBt.frame=CGRectMake(8, 22, 32, 32); _reloadBt.frame=CGRectMake(KScreenWp-40, 22, 32, 32); _titleView.frame=CGRectMake(0, 0, KScreenWp, 64 + kStatusBarH + (KIsiPhoneX?20:0)); _urlView.frame=CGRectMake(50, 34 + kStatusBarH + (KIsiPhoneX?20:0), KScreenWp-100, 24); _webView.frame=CGRectMake(0, 64 + kStatusBarH + (KIsiPhoneX?20:0), KScreenWp, KScreenHp-64 - kStatusBarH - (KIsiPhoneX?20:0)); _backBt.frame=CGRectMake(8, 22 + kStatusBarH + (KIsiPhoneX?20:0), 32, 32); _reloadBt.frame=CGRectMake(KScreenWp-40, 22 + kStatusBarH + (KIsiPhoneX?20:0), 32, 32); return _orMake; } @@ -209,7 +212,7 @@ if (object == _webView) { NSString *title = _webView.title; if(webtitle==nil){ webtitle=[[UILabel alloc] initWithFrame:CGRectMake(50, 15, KScreenW-100, 32)]; webtitle=[[UILabel alloc] initWithFrame:CGRectMake(50, 15 + kStatusBarH+ (KIsiPhoneX?20:0), KScreenW-100, 32)]; [webtitle setFont:[UIFont systemFontOfSize:14]]; [webtitle setTextColor:[UIColor whiteColor]]; [webtitle setTextAlignment:NSTextAlignmentLeft]; BuWanVideo2.0/searchDetailViewController.m
@@ -245,7 +245,7 @@ [self.DisplayTabelView setHidden:NO]; [self.suggestTableview setHidden:YES]; [self.DisplayTabelView.mj_header beginRefreshing]; [self searchDataWithText:text withType:typenumber withPage:1 :YES]; } else { //提示用户搜索内容不能为空 } @@ -606,7 +606,7 @@ if(tableView == self.suggestTableview){ NSString *name = [_suggestSearch objectAtIndex:indexPath.section]; [self textFieldSearch:name]; [self searchDataWithText:name withType:typenumber withPage:1 :YES]; //[self searchDataWithText:name withType:typenumber withPage:1 :YES]; } else { XYRVideoInfoModel *model = [XYRVideoInfoModel yy_modelWithDictionary:_dataSearch[indexPath.section]]; Podfile
@@ -2,7 +2,8 @@ #source 'https://gitee.com/mirrors/CocoaPods-Specs.git' #source 'https://github.com/volcengine/volcengine-specs.git' #source 'http://repo.baichuan-ios.taobao.com/baichuanSDK/AliBCSpecs.git' platform :ios, '9.0' platform :ios, '10.0' #platform :ios, '13.0' install! 'cocoapods', :disable_input_output_paths => true use_frameworks! @@ -21,10 +22,11 @@ pod 'SDAutoLayout' pod 'IQKeyboardManager' pod 'SVProgressHUD' pod 'GDTMobSDK' pod 'GDTMobSDK', '4.14.45' # GroMore SDK pod 'Ads-Fusion-CN-Beta','5.7.0.8', :subspecs => ['BUAdSDK','CSJMediation'] pod 'BUAdTestMeasurement','5.6.0.5', :configuration => ['Debug'] pod 'CSJMGdtAdapter','4.14.45.0' #LCDSDK,版本号以赋能平台生成的Pod命令为准 pod 'Pangrowth', '3.9.0.2', :subspecs => ['media'] # AppLog SDK @@ -32,7 +34,7 @@ # :subspecs => ['Core', 'Log', 'Host/CN'], # :source=> 'https://github.com/bytedance/cocoapods_sdk_source_repo.git' # 穿山甲SDK,版本号以赋能平台生成的Pod命令为准 pod 'Ads-CN' # pod 'Ads-CN' # APMInsight SDK pod 'RangersAPM', '3.3.1', :subspecs => [ 'Core', Podfile.lock
@@ -1,11 +1,8 @@ PODS: - Ads-CN (5.1.0.5): - Ads-CN/BUAdSDK (= 5.1.0.5) - Ads-CN/BUAdSDK (5.1.0.5): - Ads-CN/Dep_Accurate - Ads-CN/Dep_Accurate (5.1.0.5): - BUAdSDK (= 0.2.0.1) - BURelyFoundation/CSJ (= 0.1.0.7) - Ads-Fusion-CN-Beta/BUAdSDK (5.7.0.8): - BURelyFoundation/CSJ (= 0.3.0.7) - Ads-Fusion-CN-Beta/CSJMediation (5.7.0.8): - Ads-Fusion-CN-Beta/BUAdSDK - AFNetworking (3.2.1): - AFNetworking/NSURLSession (= 3.2.1) - AFNetworking/Reachability (= 3.2.1) @@ -21,48 +18,21 @@ - AFNetworking/Serialization (3.2.1) - AFNetworking/UIKit (3.2.1): - AFNetworking/NSURLSession - BUAdSDK (0.2.0.1): - BUAdSDK/BUAdSDK (= 0.2.0.1) - BUAdSDK/BUAdSDK (0.2.0.1) - BURelyFoundation/AFNetworking (0.1.0.7) - BURelyFoundation/BURelyFoundation (0.1.0.7) - BURelyFoundation/CSJ (0.1.0.7): - BURelyFoundation/AFNetworking - BURelyFoundation/BURelyFoundation - BURelyFoundation/CSJLottie - BURelyFoundation/Foundation - BURelyFoundation/Gecko - BUAdTestMeasurement (5.6.0.5) - BURelyFoundation/AFNetworking (0.3.0.7) - BURelyFoundation/BURelyFoundationHeader (0.3.0.7) - BURelyFoundation/CSJ (0.3.0.7): - BURelyFoundation/BURelyFoundationHeader - BURelyFoundation/HM - BURelyFoundation/NETWork - BURelyFoundation/SDWebImage - BURelyFoundation/Ugen - BURelyFoundation/YYModel - BURelyFoundation/ZFPlayer - BURelyFoundation/Zip - BURelyFoundation/CSJLottie (0.1.0.7) - BURelyFoundation/ELCoreTokenizer (0.1.0.7) - BURelyFoundation/Foundation (0.1.0.7): - BURelyFoundation/NETWork - BURelyFoundation/Gecko (0.1.0.7): - BURelyFoundation/Foundation - BURelyFoundation/HM (0.1.0.7) - BURelyFoundation/NETWork (0.1.0.7): - BURelyFoundation/HM (0.3.0.7) - BURelyFoundation/NETWork (0.3.0.7): - BURelyFoundation/AFNetworking - BURelyFoundation/SDWebImage (0.1.0.7): - BURelyFoundation/Foundation - BURelyFoundation/ServiceCenter - BURelyFoundation/ServiceCenter (0.1.0.7) - BURelyFoundation/Ugen (0.1.0.7): - BURelyFoundation/ELCoreTokenizer - BURelyFoundation/YYModel (0.1.0.7) - BURelyFoundation/ZFPlayer (0.1.0.7): - BURelyFoundation/Foundation - BURelyFoundation/Zip - BURelyFoundation/Zip (0.1.0.7): - BURelyFoundation/Foundation - GDTMobSDK (4.14.12): - GDTMobSDK/GDTMobSDK (= 4.14.12) - GDTMobSDK/GDTMobSDK (4.14.12) - CSJMGdtAdapter (4.14.45.0): - Ads-Fusion-CN-Beta/CSJMediation (>= 5.6.1.3) - GDTMobSDK (4.14.45): - GDTMobSDK/GDTMobSDK (= 4.14.45) - GDTMobSDK/GDTMobSDK (4.14.45) - IQKeyboardManager (6.5.9) - OneKit/BaseKit (1.4.2): - OneKit/Service @@ -158,9 +128,12 @@ - YYImage DEPENDENCIES: - Ads-CN - Ads-Fusion-CN-Beta/BUAdSDK (= 5.7.0.8) - Ads-Fusion-CN-Beta/CSJMediation (= 5.7.0.8) - AFNetworking (~> 3.0) - GDTMobSDK - BUAdTestMeasurement (= 5.6.0.5) - CSJMGdtAdapter (= 4.14.45.0) - GDTMobSDK (= 4.14.45) - IQKeyboardManager - Pangrowth/media (= 3.9.0.2) - RangersAPM/Core (= 3.3.1) @@ -187,10 +160,11 @@ - RangersAppLog - RARegisterKit trunk: - Ads-CN - Ads-Fusion-CN-Beta - AFNetworking - BUAdSDK - BUAdTestMeasurement - BURelyFoundation - CSJMGdtAdapter - GDTMobSDK - IQKeyboardManager - SDAutoLayout @@ -216,11 +190,12 @@ :tag: 2.5.2 SPEC CHECKSUMS: Ads-CN: 342fba3a46d17fa395da7bba1d88893fe33905e6 Ads-Fusion-CN-Beta: b24c5ebc64156900daf68751537582841920d328 AFNetworking: cb604b1c2bded0871f5f61f5d53653739e841d6b BUAdSDK: 002b735289815f703efc9108f66347ac61f1892a BURelyFoundation: 0de7dbb9acc7f69a0a56b09949260f5dc5a4e0ab GDTMobSDK: 085bb4c2390d78330405d90acfc43fa7f8d0a44e BUAdTestMeasurement: 49fdfe9592b53e533e9388d34298549733205e9d BURelyFoundation: bfffcd4174e88fde6a73c1d521b801ba117d15b6 CSJMGdtAdapter: bf3b16efa4294bc2669181692de2bd44b7eb9adf GDTMobSDK: 149d13de51d63a8ac0368836fd06fd7db52de816 IQKeyboardManager: 241cc94ccabc9deb8f8bd7d12f00d73288d13ecc OneKit: 05d59eb122e247640c35ceb28b300ae27e89cb88 Pangrowth: aa585a527ef38f341e13c27e2e101f2c3656a597 @@ -241,6 +216,6 @@ YYModel: 2a7fdd96aaa4b86a824e26d0c517de8928c04b30 YYWebImage: 5f7f36aee2ae293f016d418c7d6ba05c4863e928 PODFILE CHECKSUM: 7206d661c260c67cf85ecc66a5097e2b50122f2e PODFILE CHECKSUM: 0c7d8ca840e8785f6e7dfb217f8326edb9f182e8 COCOAPODS: 1.12.1