• Stars
    star
    391
  • Rank 110,003 (Top 3 %)
  • Language
    Swift
  • Created almost 8 years ago
  • Updated about 3 years ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

iOS 利用余弦函数特性实现可以居中放大的图片浏览工具

XLCardSwitch

利用余弦函数的曲线特性实现的图片居中放大浏览工具,内部是利用UICollectionview的滚动实现的,有兴趣的可以看一下我的博文,里面有具体的实现原理,还是挺好玩儿的。本工具也只是想传递这个这个居中放大的算法,为了方便使用也做了些功能性的封装;

功能

  • 手指拖动切换卡片
  • 调用方法切换卡片
  • 可设置分页滚动

效果

正常滚动 自动居中 调用方法切换
image image image

使用方法

OC版本

创建方法:

    //设置卡片浏览器
    _cardSwitch = [[XLCardSwitch alloc] initWithFrame:CGRectMake(0, 64, self.view.bounds.size.width, self.view.bounds.size.height - 64)];
    _cardSwitch.items = items;
    //设置代理
    _cardSwitch.delegate = self;
    //设置是否打开分页滑动
    _cardSwitch.pagingEnabled = true;
    //设置初始位置,默认为0
    _cardSwitch.selectedIndex = 3;
    [self.view addSubview:_cardSwitch];

切换位置:

[_cardSwitch switchToIndex:3 animated:true];

_cardSwitch.selectedIndex = 3;

代理方法:

- (void)XLCardSwitchDidSelectedAt:(NSInteger)index {
    NSLog(@"选中了:%zd",index);
}

Swift版本

1、创建

lazy var cardSwitch: XLCardSwitch = {
    let temp = XLCardSwitch.init()
    temp.frame = self.view.bounds
    temp.dataSource = self
    temp.delegate = self
    //注册cell
    temp.register(cellClass: CustomCollectionViewCell.self, forCellWithReuseIdentifier:"CustomCellID")
    return temp
}()

2、DataSource

注:使用时必须接入DataSource方法,且需要自定义一个UICollectionviewcell,使用方法和UICollectionview一样,先注册,再使用;XLCardSwitch只负责缩放效果,不关心其他数据和UI

//DataSource方法,返回总共卡片个数
func cardSwitchNumberOfCard() -> (Int) {
    return self.cellInfoArr().count
}
    
//DataSource方法,返回UICollectionViewCell
func cardSwitchCellForItemAtIndex(index: Int) -> (UICollectionViewCell) {
    let cell = self.cardSwitch.dequeueReusableCell(withReuseIdentifier:"CustomCellID", for: index) as! CustomCollectionViewCell
    cell.imageView.image = UIImage.init(named: self.cellInfoArr()[index].0)
    cell.textLabel.text = self.cellInfoArr()[index].1
    return cell
}

3、Delegate

//滑动切换到新的位置回调
@objc optional func cardSwitchDidScrollToIndex(index: Int) -> ()
//手动点击了
@objc optional func cardSwitchDidSelectedAtIndex(index: Int) -> ()

实现原理请参考我的博文

个人开发过的UI工具集合 XLUIKit

More Repositories

1

XLUIKit

iOS UI工具集
1,355
star
2

XLPageViewController

一个开放、高度可定制化的分页视图控制器
Objective-C
371
star
3

XLChannelControl

iOS 仿腾讯新闻客户端的频道管理功能
Objective-C
259
star
4

XLPlayButton

爱奇艺、优酷的播放/暂停按钮动画效果
Objective-C
234
star
5

XLImageViewer

iOS 仿照今日头条的图片浏览工具。
Objective-C
164
star
6

XLSlideSwitch

iOS 仿照今日头条滚动列表
Objective-C
138
star
7

XLBubbleTransition

iOS ViewController间切换的转场动画
Objective-C
137
star
8

XLSlideMenu

iOS 仿QQ的左右抽屉效果
Objective-C
128
star
9

XLPaymentHUD

iOS 支付宝支付动画
Objective-C
117
star
10

XLCircleProgress

iOS 圆环进度指示器
Objective-C
111
star
11

XLFoldClock

翻页时钟
Objective-C
97
star
12

XLBallLoading

iOS 利用贝塞尔曲线实现的加载动画
Objective-C
67
star
13

XLWaveProgress

iOS 波浪式的进度指示器
Objective-C
51
star
14

XLTieBaLoading

iOS 仿照百度贴吧的灌水效果
Objective-C
50
star
15

XLDotLoading

iOS 新浪微博红包加载动画
Objective-C
31
star
16

XLDouYinLoading

抖音加载动画
Objective-C
31
star
17

XLRefresh

iOS 下拉刷新工具
Objective-C
25
star
18

XLClock

锤子时钟
Objective-C++
22
star
19

XLCycleCollectionView

iOS 无限循环的轮播图
Objective-C
21
star
20

XLZoomHeader

下拉放大背景图的顶部视图,适用于UIScrollView及其子类
Objective-C
15
star
21

XLUIFont

iOS 系统字体预览
Objective-C
14
star
22

XLGesturePassword

QQ 手势密码
Objective-C
12
star
23

XLNavigationBar

An navigationBar appearance config tool.
Objective-C
5
star
24

iOSReverseStudy

iOS逆向学习
Objective-C
3
star
25

mengxianliang.github.io

个人主页仓库
HTML
1
star
26

AlgorithmsNotes

保存算法记录
Swift
1
star
27

PublicClassNote

公开课学习笔记
Objective-C
1
star