登录 立即注册
金钱:

Code4App-iOS开发-iOS 开源代码库-iOS代码实例搜索-iOS特效示例-iOS代码例子下载-Code4App.com

DGAdLaunchView-模仿网易新闻启动页广告

[复制链接]
来自: 冬瓜_____ 分类: iOS精品源码 上传时间: 2016-5-27 07:05:44

项目介绍:

有swift、ObjC两个版本。图片缓存试用SDWebImage进行管理,另使用SnapKit进行布局。(OC使用Masonry)大家可以star下github,代码功能陆续仍会更新。

实现思路:
在一番google之后,发现实现启动页广告的效果,在appDelegate.m中,在window属性上增加一层view即可实现效果。具体效果如果网易新闻一样。而在广告页面也要保持launch页面的slogan标识的时候,只有我们将其view背景设置成相同即可。在前期工作都处理完成后,说一下广告图片的缓存逻辑:

这里使用SDWebImage来管理图片的缓存。我们确定逻辑流程图如下:
1.png

启动页广告ViewSDWebImage检查本地缓存加载页面隐藏广告,展示首页YSDWebImage下载最新广告,加入缓存其他控制器点击广告首页控制器
给出各个流程的实现方法:

检查本地缓存。可以利用SDWebImage中的SDWebImageManager,分布从缓存(cached)、硬盘(disk)中进行查询,如果存在图片,则直接加载;若没有,隐藏AdView。

[Objective-C] 查看源文件 复制代码
func displayCachedAd() {
    let manange: SDWebImageManager = SDWebImageManager()
    let url = NSURL(string: imageURL)
    if (manange.cachedImageExistsForURL(url) == false) {
        self.hidden = true
    } else {
        showImage()
    }
}

func showImage() {
    adImageView = UIImageView(frame: CGRect(x: 0, y: 0, width: UIScreen.mainScreen().bounds.width, height: UIScreen.mainScreen().bounds.height - sloganHeight))
    if let adImageView = adImageView {
        adImageView.sd_setImageWithURL(NSURL(string: imageURL))
        adImageView.userInteractionEnabled = true
        let singleTap: UITapGestureRecognizer = UITapGestureRecognizer(target: self, action: #selector(AdLaunchView.singleTapAction))
        adImageView.addGestureRecognizer(singleTap)

        addSubview(adImageView)
    }
}



下载图片。利用SDWebImage中的downloadImageWithURL方法,切记使用的是SDWebImageManager中的下载图片方法,而不是SDWebImageDownloader,前者支持自动缓存存储管理图片,而后者需要手动管理。这里考虑到数据持久化方式。

[Objective-C] 查看源文件 复制代码
func requestBanner() {
    SDWebImageManager.sharedManager().downloadImageWithURL(NSURL(string: self.imageURL), options: SDWebImageOptions.AvoidAutoSetImage, progress: nil) { (image:UIImage!, error:NSError!, cacheType:SDImageCacheType, finished:Bool, url:NSURL!) in
        print("图片下载成功")
    }
}



制作点击事件。因为考虑到要从ViewController跳转至其他Controller,所以使用代理方式进行实现。让持有View的controller自定义跳转方法,这样也增加了灵活性。
[Objective-C] 查看源文件 复制代码
@objc protocol AdLaunchViewDelegate: NSObjectProtocol {
    func adLaunchView(launchView: AdLaunchView, bannerImageDidClick imageURL: String)
}

@objc func singleTapAction() {
    self.delegate?.adLaunchView(self, bannerImageDidClick: imageURL)
    toHidenState()
}




在appDelegate.m中我们实现点击事件的代理方法。

[Objective-C] 查看源文件 复制代码
func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject : AnyObject]?) -> Bool {

    window?.makeKeyAndVisible()

    adLaunchView = AdLaunchView(frame: UIScreen.mainScreen().bounds)
    adLaunchView?.delegate = self
    window?.addSubview(adLaunchView!)
    return true;
}


总体来说,写这个广告页也让我重新读了一遍SDWebImage源码,也对appDelegart的生命周期更加熟悉。
解压的包中包含 OC 和 Swift 双版本 demo


DGAdLaunchView-master.zip (619.19 KB, 下载次数: 184, 售价: 10 金钱)
6904 2 0
联系我们
首页/微信公众账号投稿

帖子代码编辑/版权问题

QQ:435399051,742864542


代码贡献英雄榜
用户名 下载数
通过邮件订阅最新 Code4App 信息
上一条 /4 下一条
联系我们
关闭
合作电话:
13802416937
Email:
435399051@qq.com
商务市场合作/投稿
问题反馈及帮助
联系我们

广告投放| 广东互联网违法和不良信息举报中心|中国互联网举报中心|Github|申请友链|手机版|Code4App ( 粤ICP备15117877号-1 )

快速回复 返回顶部 返回列表