首页广告弹框

现在软件的更新也是日新月异,最近发现APP打开后都会在根视图上面弹出一个小广告,点击进去跳入新的界面,点击取消主界面讲可以响应
1.gif

咱们可以创建一个测试的demo工程.
一.创建一个UITabBarController然后root两个视图控制器,并把UITabBarController控制器作为window的根视图

在AppDelegate.m里

    self.window = [[UIWindow alloc]initWithFrame:[UIScreen mainScreen].bounds];
    self.window.rootViewController = [[MainTabBarVC alloc]init];
    [self.window makeKeyAndVisible];

在MainTabBarVC.m里

    FirstViewController *firstVC = [FirstViewController new];
    SecondViewController *secondVC= [SecondViewController new];
    firstVC.title = @"首页";
    secondVC.title = @"好友";
    [self addChildViewController:firstVC];
    [self addChildViewController:secondVC];

二.我们可以自定义View或者控制器来显示这个弹出的界面,这里我们选择使用自定义View不带XIB,在这个View中自定义两个控件,一个是ImageView,另一个是Button

2.png

三.在自定义View中进行控件的封装,这个我们要重写两个方法
1.重写- (instancetype)initWithFrame方法,此方法创建并添加子控件
2.重写- (void)layoutSubviews方法,此方法中设置子控件的frame,在方法尾部要调用[super layoutSubviews]
代码如下:

- (instancetype)initWithFrame:(CGRect)frame {
    if (self = [super initWithFrame:frame]) {

        UIImageView *imageView = [[UIImageView alloc]initWithImage:[UIImage imageNamed:@"1"]];
        self.imageView = imageView;
        [self addSubview:self.imageView];
        self.imageView.userInteractionEnabled = YES;
        UITapGestureRecognizer * ImageViewTap=[[UITapGestureRecognizer alloc]initWithTarget:self action:@selector(tapView:)];
        ImageViewTap.numberOfTouchesRequired = 1; //手指数
        ImageViewTap.numberOfTapsRequired = 1; //tap次数
        self.imageView.contentMode = UIViewContentModeScaleToFill;
        [self.imageView addGestureRecognizer:ImageViewTap];
        
        UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom];
        [button setBackgroundImage:[UIImage imageNamed:@"delete"] forState:UIControlStateNormal];
        self.button = button;
        [button addTarget:self action:@selector(buttonClick) forControlEvents:UIControlEventTouchDown];
        [self addSubview:self.self.button];
    }
    
    return self;
}

- (void)layoutSubviews
{
    self.imageView.frame = CGRectMake(100, 100, 200, 200);
    self.button.frame = CGRectMake(180, 350, 50, 50);
    [super layoutSubviews];
}

注:这里我们给ImageView添加手势,Button这里咱们也要addTarget添加事件,一会儿会实现点击事件的触发.

四.现在需要考虑如何添加这个自定义View,也就是在什么时机添加这个自定义View.这里我们选择AppDelegate.m中的在应用程序载入后执行的
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions方法

  MyView *view = [[MyView alloc]initWithFrame:CGRectMake(0, 0, [UIScreen mainScreen].bounds.size.width,[UIScreen mainScreen].bounds.size.height)];
  [self.window addSubview:view];

五.下面实现以下自定义View中的ImageView和Button所触发的事件方法
1.点击ImageView,这里我们触发手势事件,所执行的事件就是跳转到相应界面,这里我们的场景就是自定义View里的ImageView手势事件实现控制器的modal
首先拿到主窗口控制器,用根控制器进行modal需要的modal的控制器

    ThirdViewController *third = [[ThirdViewController alloc]init];
    UIViewController *VC = [UIApplication sharedApplication].keyWindow.rootViewController;
    [VC presentViewController:third animated:YES completion:nil];
    [self removeFromSuperview];

注:这里在跳转界面后我们要移除视图
2.点击Button时这里我们只需要移除视图就可以了,当然我这里为了好看也给了个动画效果

- (void) buttonClick {
    [UIView animateWithDuration:0.5 delay:0.3 options:UIViewAnimationOptionCurveEaseOut animations:^{
        self.transform = CGAffineTransformMakeScale(1.2, 1.2);
        self.alpha = 0.0;
        
    } completion:^(BOOL finished) {
        [self removeFromSuperview];
    }];
}

六.在ThirdViewController.m我们简单使用一下WKWebView加载一个网页

#import "ThirdViewController.h"
#import  <WebKit/WebKit.h>
@interface ThirdViewController ()<WKNavigationDelegate>

@end

@implementation ThirdViewController

- (void)viewDidLoad {
    [super viewDidLoad];
    //创建NSURL
    NSURL *url = [NSURL URLWithString:@"http://www.baidu.com"];
    //创建NSURLRequest
    NSURLRequest *request = [NSURLRequest requestWithURL:url];
    //创建WKWebView对象,添加到界面(storyboard没有控件)
    WKWebView *webView = [[WKWebView alloc]initWithFrame:self.view.frame];
    [self.view addSubview:webView];
    //设置代理
    webView.navigationDelegate = self;
    //加载请求
    [webView loadRequest:request];
}
@end

七.设置一下自定义View的背景颜色
在MyView.m类中的- (instancetype)initWithFrame:(CGRect)frame方法中是现实

 self.backgroundColor = [[UIColor blackColor];
 self.alpha = 0.5;
3.jpeg

这里写完后运行程序我们可以看到View中的ImageView和Button上的图片都被覆盖了颜色,这样与预期效果不符,那么我们另辟蹊径,使用self.backgroundColor = [[UIColor blackColor] colorWithAlphaComponent:0.5];方法就可以完美解决这个问题了

4.jpeg

百度网盘地址: https://pan.baidu.com/s/1kUJmlOb 密码: ie2j

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,793评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,567评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,342评论 0 338
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,825评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,814评论 5 368
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,680评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,033评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,687评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 42,175评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,668评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,775评论 1 332
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,419评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,020评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,978评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,206评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,092评论 2 351
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,510评论 2 343

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 171,453评论 25 707
  • 发现 关注 消息 iOS 第三方库、插件、知名博客总结 作者大灰狼的小绵羊哥哥关注 2017.06.26 09:4...
    肇东周阅读 12,019评论 4 62
  • 你是否也为孩子不去整理自己的玩具而头疼?由于我自己不是一个特别爱整理的人,所以整理对于我来说是件苦差事。自己...
    实用育儿阅读 266评论 0 0
  • 以前是喜欢写一些东西的,即使文笔不好也可以总结当下的生活,站在旁观者的角度去审视自己的人生。 工作两年零3个月,刚...
    丢掉自以为是阅读 112评论 0 0
  • 清晨,小鸟的歌唱把我唤醒:六点了,一夜好眠,我要起床啦! 洗漱,拉伸,看书…早餐后,我满怀喜悦出发,去义诊! 二年...
    孙国飞扬阅读 307评论 1 14