前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >iOS广告轮播图

iOS广告轮播图

作者头像
公众号iOS逆向
发布于 2021-07-05 13:09:40
发布于 2021-07-05 13:09:40
76900
代码可运行
举报
文章被收录于专栏:iOS逆向与安全iOS逆向与安全
运行总次数:0
代码可运行
  • 1.1 cell 头文件
  • 1.2 cell 实现文件
  • 1.3 cell的使用

引言

在这里插入图片描述

需求背景:

信用卡网申接入(IOS)

实现思路:

自定义cell封装CycleScrollView 可使用第三方库:pod 'SDCycleScrollView','1.80'

原文地址

https://kunnan.blog.csdn.net/article/details/117529892

I、自定义cell封装CycleScrollView

1.1 cell 头文件

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制

#import <UIKit/UIKit.h>

NS_ASSUME_NONNULL_BEGIN

@interface QCTbannerViewTableViewCell : UITableViewCell



@property (nonatomic, strong) id models;
@property (nonatomic, copy) void (^block)(id sender);
+ (instancetype) tableViewCellWithTableView:(UITableView *) tableView   block:(void (^)(id sender))block  models:(id) models ;
+ (instancetype) tableViewCellWithTableView:(UITableView *) tableView;


/** block方式监听点击 */
@property (nonatomic, copy) void (^clickItemOperationBlock)(NSInteger currentIndex);




@end

NS_ASSUME_NONNULL_END

1.2 cell 实现文件

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
//

#import "QCTbannerViewTableViewCell.h"

#import "SDCycleScrollView.h"


@interface QCTbannerViewTableViewCell ()


@property (nonatomic,weak) SDCycleScrollView *cellView;


@end

@implementation QCTbannerViewTableViewCell

- (void)awakeFromNib {
    [super awakeFromNib];
    // Initialization code
}

- (void)setSelected:(BOOL)selected animated:(BOOL)animated {
    [super setSelected:selected animated:animated];

    // Configure the view for the selected state
}



-(instancetype)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier{
    self = [super initWithStyle:style reuseIdentifier:reuseIdentifier];
    if (self) {
        
        self.selectionStyle = UITableViewCellSelectionStyleNone;//去掉选中效果
        
        
        [self selfInit];
        [self createSubView];
        [self bindViewModel];
        
        
    }
    return self;
}

- (void)bindViewModel {
}

- (void)selfInit{
    
    self.contentView.backgroundColor = kcellColor;
    
}

- (void)createSubView {
    [self cellView];
}


static NSString *identifier = @"QCTbannerViewTableViewCell";//QCTCheckOutViewcellSection4topTableViewCell
+ (instancetype) tableViewCellWithTableView:(UITableView *) tableView{
    
    QCTbannerViewTableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:identifier];
    if (cell == nil) {// ------并不会执行
        
        cell = [[QCTbannerViewTableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:identifier];
        
    }
    return cell;
}

+ (instancetype) tableViewCellWithTableView:(UITableView *) tableView   block:(void (^)(id sender))block  models:(id) models {
    QCTbannerViewTableViewCell *cell  = [self  tableViewCellWithTableView:tableView];
    
    if (block) {
        cell.block = block;
    }
    cell.models = models;
    return cell;
    
}


#pragma mark - ******** model

- (void)setModels:( id)models{
    _models =models;
    
        self.cellView.localizationImageNamesGroup = models;
    
    
}


- (SDCycleScrollView *)cellView{
    if (nil == _cellView) {
        SDCycleScrollView *tmpView = [[SDCycleScrollView alloc]init];
        _cellView = tmpView;
        
        
        _cellView.autoScrollTimeInterval = 3.0;
        _cellView.scrollDirection = UICollectionViewScrollDirectionHorizontal;
        
        
        _cellView.currentPageDotImage = [UIImage imageNamed:@"pageControlCurrentDot"];
        _cellView.pageDotImage = [UIImage imageNamed:@"pageControlDot"];
        

        
        
        
        
        
        [tmpView setBackgroundColor:kcellColor];
        
        [self.contentView addSubview:_cellView];
        
        __weak __typeof__(self) weakSelf = self;
        [_cellView mas_makeConstraints:^(MASConstraintMaker *make) {
            
            make.left.equalTo(weakSelf.contentView).offset(kAdjustRatio(15));
            make.right.equalTo(weakSelf.contentView).offset(- kAdjustRatio(15));
            make.top.equalTo(weakSelf.contentView).offset(kAdjustRatio(0));
            make.height.mas_equalTo(kAdjustRatio(150));
            
            
            make.bottom.equalTo(weakSelf.contentView).offset(kAdjustRatio(0));
            
        }];
        
        //监听点击
//        __weak __typeof__(self) weakSelf = self;

        
        [_cellView setClickItemOperationBlock:^(NSInteger currentIndex) {
           

            if(weakSelf.clickItemOperationBlock){
                weakSelf.clickItemOperationBlock(currentIndex);
                
                
            }
            
            
        }];
        
        
    }
    return _cellView;
}


- (void)layoutSubviews {
    [super layoutSubviews];
    UIView *view = self.cellView;
    [view layoutIfNeeded];
    
    view.backgroundColor = [UIColor colorWithRed:249/255.0 green:249/255.0 blue:249/255.0 alpha:1.0];//设置阴影的颜色
    
    view.layer.shadowColor = [UIColor colorWithRed:0/255.0 green:0/255.0 blue:0/255.0 alpha:0.16].CGColor;
    view.layer.shadowOffset = CGSizeMake(0,2);//设置阴影的偏移量,阴影的大小,x往右和y往下是正
    view.layer.shadowRadius = 3;
    view.layer.shadowOpacity = 1;//设置阴影的透明度
    view.layer.cornerRadius = 10;
    
    view.clipsToBounds = YES;//Setting this value to YES causes subviews to be clipped to the bounds of the receiver. If set to NO, subviews whose frames extend beyond the visible bounds of the receiver are not clipped. The default value is NO.

}

@end

1.3 cell的使用

  • 构建数据模型
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-06-09,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 iOS逆向 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
Js实用函数合集
var b = new Date(); //获取当前时间 b.getTime() //获取时间戳 b.getFullYear() //获取年份 b.getMonth()+1; //获取月份 b.getDate() //获取天 b.getHours() //获取小时 b.getMinutes() //获取分钟 b.getSeconds() //获取秒数 b.getDay() //获取星期几 b.getMilliseconds() //获取毫秒
全栈程序员站长
2022/09/18
1.5K0
Js实用函数合集
10个实用的工具函数
new Array 创建的数组只是添加了length属性,并没有实际的内容。通过扩展后,变为可用数组用于循环
WahFung
2020/08/24
5000
【总结】56个JavaScript 实用工具函数助你提升开发效率!
https://juejin.cn/post/7019090370814279693
pingan8787
2021/11/08
9610
【总结】56个JavaScript 实用工具函数助你提升开发效率!
jQuery来源学习笔记:扩展的实用功能
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/117736.html原文链接:https://javaforall.cn
全栈程序员站长
2022/07/05
6040
分享 21 个简单实用的 JS 代码技巧
有时候我们需要将元素滚动到可见区域,怎么办?使用 scrollIntoView 就足够了。
前端达人
2023/08/31
2990
分享 21 个简单实用的 JS 代码技巧
从Vue.js源码中我学到的几个实用函数
如果想看Vuejs源码,不知道如何下手,一般推荐配置Sourcemap,针对单个问题调试来看,如何调试Vuejs源码,我的vuex源码文章中写了。
若川
2021/04/23
2.6K0
从Vue.js源码中我学到的几个实用函数
create common utils.js
/* * author:w候人兮猗(ahwgs) * url:https://www.ahwgs.cn * github:https://github.com/ahwgs/common-utils/blob/master/utils * */ /** * 是否是数组 * @param value * @returns {boolean} */ export const isArray = (value) => { return toString.call(value) === '[obje
w候人兮猗
2020/07/01
1.1K0
常用的前端JavaScript方法封装
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/157261.html原文链接:https://javaforall.cn
全栈程序员站长
2022/09/15
8870
BiugleJS
老猫-Leo
2023/12/11
1760
手撕常见JS面试题
高阶函数实现AOP(面向切面编程) Function.prototype.before = function (beforefn) { let _self = this; // 缓存原函数的引用 returnfunction () { // 代理函数 beforefn.apply(this, arguments); // 执行前置函数 return _self.apply(this, arguments); // 执行原函数
helloworld1024
2022/10/14
5500
js知识点总结--这些你都了解了吗?
js是一种基于对象和事件驱动的并具有相对安全性的客户端脚本语言。也是一种广泛用于web客户端开发的脚本语言,常用来给html网页添加动态功能,如响应用户的各种操作。想了解更多加群1075083208主要的目的是为了解决服务器端语言遗留的速度问题,为客户提供更流畅的浏览效果。
7537367
2020/08/03
5930
收藏好了,JS开发须知道的41个小技巧
链接:https://juejin.im/post/6854573212890562573
coder_koala
2020/11/10
5690
收藏好了,JS开发须知道的41个小技巧
前端60余种工具方法,值得收藏
“ 关注 前端开发社区 ,回复 '领取资源',免费领取Vue,小程序,Node Js,前端开发用的插件以及面试视频等学习资料,让我们一起学习,一起进步
前端老道
2020/05/27
9520
前端60余种工具方法,值得收藏
前端简洁并实用的工具类
本文主要从日期,数组,对象,axios,promise和字符判断这几个方面讲工作中常用的一些函数进行了封装,确实可以在项目中直接引用,提高开发效率.
火狼1
2019/04/17
6280
前端简洁并实用的工具类
【JS】1890- 20 个 JS 工具函数助力高效开发
日常开发中,面对各种不同的需求,我们经常会用到以前开发过的一些工具函数,把这些工具函数收集起来,将大大提高我们的开发效率。
pingan8787
2023/12/13
2300
【JS】1890- 20 个 JS 工具函数助力高效开发
32个手撕JS,彻底摆脱初级前端(面试高频)
作者:洛霞 https://juejin.im/post/6875152247714480136
前端达人
2020/11/11
1.9K0
32个手撕JS,彻底摆脱初级前端(面试高频)
关于JavaScript常用的工具函数汇总
前言 随着开发经验的积累,很多人会有自己的常用站点,一些网址收藏,自己造的轮子或者别人的轮子,工具函数库等等。 这里提供一些常用的工具函数,如果你也有一些觉得挺不错的库,欢迎在下方评论💓。 格式化时间戳 export function formatDateTimeStamp(date, fmt) { // 格式化时间戳 : formatDateTimeStamp(new Date(time),'yyyy-MM-dd hh:mm:ss') if (/(y+)/.test(fmt)) {
唐志远
2022/10/27
5580
js工具函数大全 || 实用篇
“ 关注 前端开发社区 ,回复 '领取资源',免费领取Vue,小程序,Node Js,前端开发用的插件以及面试视频等学习资料,让我们一起学习,一起进步
前端老道
2020/05/29
4.8K0
js工具函数大全 || 实用篇
JS开发必须知道的41个技巧【持续更新】
JS是前端的核心,但有些使用技巧你还不一定知道; 本文梳理了JS的41个技巧,帮助大家提高JS的使用技巧; 文章有点长,可以clone下源码,直接撸,源码地址请戳全部源码,原创不易,欢迎star; 序列文章: Vue 开发必须知道的 36 个技巧 React 开发必须知道的 34 个技巧
火狼1
2020/07/21
8440
49个常用JavaScript方法封装
https://segmentfault.com/a/1190000039220666
@超人
2021/07/29
5900
相关推荐
Js实用函数合集
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验